Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Core / CSharp / System / Windows / DurationConverter.cs / 1 / DurationConverter.cs
//------------------------------------------------------------------------------ // Microsoft Windows Client Platform // Copyright (c) Microsoft Corporation, 2004 // // File: DurationConverter.cs //----------------------------------------------------------------------------- using System; using System.ComponentModel; using System.ComponentModel.Design.Serialization; using System.Diagnostics; using System.Globalization; using System.Reflection; using System.Security; namespace System.Windows { ////// Provides a type converter to convert Duration to and from other representations. /// public class DurationConverter : TypeConverter { ////// CanConvertFrom - Returns whether or not this class can convert from a given type /// ///public override bool CanConvertFrom(ITypeDescriptorContext td, Type t) { if (t == typeof(string)) { return true; } else { return false; } } /// /// TypeConverter method override. /// /// ITypeDescriptorContext /// Type to convert to ///true if conversion is possible ///public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) { if ( destinationType == typeof(InstanceDescriptor) || destinationType == typeof(string)) { return true; } else { return false; } } /// /// ConvertFrom /// ///public override object ConvertFrom( ITypeDescriptorContext td, CultureInfo cultureInfo, object value) { string stringValue = value as string; // Override the converter for sentinel values if (stringValue != null) { stringValue = stringValue.Trim(); if (stringValue == "Automatic") { return Duration.Automatic; } else if (stringValue == "Forever") { return Duration.Forever; } } TimeSpan duration = TimeSpan.Zero; if(_timeSpanConverter == null) { _timeSpanConverter = new TimeSpanConverter(); } duration = (TimeSpan)_timeSpanConverter.ConvertFrom(td, cultureInfo, value); return new Duration(duration); } /// /// TypeConverter method implementation. /// /// ITypeDescriptorContext /// current culture (see CLR specs) /// value to convert from /// Type to convert to ///converted value ////// /// Critical: calls InstanceDescriptor ctor which LinkDemands /// PublicOK: can only make an InstanceDescriptor for Duration, not an arbitrary class /// [SecurityCritical] public override object ConvertTo( ITypeDescriptorContext context, CultureInfo cultureInfo, object value, Type destinationType) { if (destinationType != null && value is Duration) { Duration durationValue = (Duration)value; if (destinationType == typeof(InstanceDescriptor)) { MemberInfo mi; if (durationValue.HasTimeSpan) { mi = typeof(Duration).GetConstructor(new Type[] { typeof(TimeSpan) }); return new InstanceDescriptor(mi, new object[] { durationValue.TimeSpan }); } else if (durationValue == Duration.Forever) { mi = typeof(Duration).GetProperty("Forever"); return new InstanceDescriptor(mi, null); } else { Debug.Assert(durationValue == Duration.Automatic); // Only other legal duration type mi = typeof(Duration).GetProperty("Automatic"); return new InstanceDescriptor(mi, null); } } else if (destinationType == typeof(string)) { return durationValue.ToString(); } } // Pass unhandled cases to base class (which will throw exceptions for null value or destinationType.) return base.ConvertTo(context, cultureInfo, value, destinationType); } private static TimeSpanConverter _timeSpanConverter; } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //------------------------------------------------------------------------------ // Microsoft Windows Client Platform // Copyright (c) Microsoft Corporation, 2004 // // File: DurationConverter.cs //----------------------------------------------------------------------------- using System; using System.ComponentModel; using System.ComponentModel.Design.Serialization; using System.Diagnostics; using System.Globalization; using System.Reflection; using System.Security; namespace System.Windows { ////// Provides a type converter to convert Duration to and from other representations. /// public class DurationConverter : TypeConverter { ////// CanConvertFrom - Returns whether or not this class can convert from a given type /// ///public override bool CanConvertFrom(ITypeDescriptorContext td, Type t) { if (t == typeof(string)) { return true; } else { return false; } } /// /// TypeConverter method override. /// /// ITypeDescriptorContext /// Type to convert to ///true if conversion is possible ///public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) { if ( destinationType == typeof(InstanceDescriptor) || destinationType == typeof(string)) { return true; } else { return false; } } /// /// ConvertFrom /// ///public override object ConvertFrom( ITypeDescriptorContext td, CultureInfo cultureInfo, object value) { string stringValue = value as string; // Override the converter for sentinel values if (stringValue != null) { stringValue = stringValue.Trim(); if (stringValue == "Automatic") { return Duration.Automatic; } else if (stringValue == "Forever") { return Duration.Forever; } } TimeSpan duration = TimeSpan.Zero; if(_timeSpanConverter == null) { _timeSpanConverter = new TimeSpanConverter(); } duration = (TimeSpan)_timeSpanConverter.ConvertFrom(td, cultureInfo, value); return new Duration(duration); } /// /// TypeConverter method implementation. /// /// ITypeDescriptorContext /// current culture (see CLR specs) /// value to convert from /// Type to convert to ///converted value ////// /// Critical: calls InstanceDescriptor ctor which LinkDemands /// PublicOK: can only make an InstanceDescriptor for Duration, not an arbitrary class /// [SecurityCritical] public override object ConvertTo( ITypeDescriptorContext context, CultureInfo cultureInfo, object value, Type destinationType) { if (destinationType != null && value is Duration) { Duration durationValue = (Duration)value; if (destinationType == typeof(InstanceDescriptor)) { MemberInfo mi; if (durationValue.HasTimeSpan) { mi = typeof(Duration).GetConstructor(new Type[] { typeof(TimeSpan) }); return new InstanceDescriptor(mi, new object[] { durationValue.TimeSpan }); } else if (durationValue == Duration.Forever) { mi = typeof(Duration).GetProperty("Forever"); return new InstanceDescriptor(mi, null); } else { Debug.Assert(durationValue == Duration.Automatic); // Only other legal duration type mi = typeof(Duration).GetProperty("Automatic"); return new InstanceDescriptor(mi, null); } } else if (destinationType == typeof(string)) { return durationValue.ToString(); } } // Pass unhandled cases to base class (which will throw exceptions for null value or destinationType.) return base.ConvertTo(context, cultureInfo, value, destinationType); } private static TimeSpanConverter _timeSpanConverter; } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- StrokeNodeData.cs
- DataGridParentRows.cs
- InputBinder.cs
- PipelineDeploymentState.cs
- FactoryRecord.cs
- VBCodeProvider.cs
- PropertyValue.cs
- WindowsButton.cs
- path.cs
- DataGridPageChangedEventArgs.cs
- ISAPIWorkerRequest.cs
- HtmlInputImage.cs
- CommonRemoteMemoryBlock.cs
- MachineKey.cs
- PipeStream.cs
- DataObjectFieldAttribute.cs
- Schema.cs
- PrinterUnitConvert.cs
- FixedElement.cs
- EnumerableCollectionView.cs
- DBSchemaRow.cs
- ThemeDirectoryCompiler.cs
- VectorCollection.cs
- GetIsBrowserClientRequest.cs
- CorrelationTokenTypeConvertor.cs
- Decorator.cs
- ColumnHeader.cs
- ComponentSerializationService.cs
- MimeMultiPart.cs
- ListViewItemMouseHoverEvent.cs
- DrawingContextWalker.cs
- QueryReaderSettings.cs
- ZoneLinkButton.cs
- HyperLink.cs
- DataRowView.cs
- ScriptResourceInfo.cs
- SchemaAttDef.cs
- DoubleKeyFrameCollection.cs
- Vector.cs
- ProcessProtocolHandler.cs
- AttachedPropertyBrowsableWhenAttributePresentAttribute.cs
- VectorAnimationUsingKeyFrames.cs
- Main.cs
- UpdateRecord.cs
- TimeManager.cs
- XmlValidatingReaderImpl.cs
- List.cs
- SqlDataSourceCache.cs
- SubqueryRules.cs
- RotateTransform3D.cs
- InvokeMethodDesigner.xaml.cs
- XPathScanner.cs
- WebPartTransformerCollection.cs
- GlobalProxySelection.cs
- DragEventArgs.cs
- InstanceKeyCompleteException.cs
- ThrowHelper.cs
- LeafCellTreeNode.cs
- X509PeerCertificateElement.cs
- SqlError.cs
- XsdDateTime.cs
- IncrementalReadDecoders.cs
- PointConverter.cs
- CultureInfoConverter.cs
- KnownAssembliesSet.cs
- BinaryExpressionHelper.cs
- PseudoWebRequest.cs
- ToolStripProgressBar.cs
- TextFindEngine.cs
- TextTreeTextBlock.cs
- TCPListener.cs
- OdbcConnectionPoolProviderInfo.cs
- KeyNotFoundException.cs
- IntellisenseTextBox.designer.cs
- ServiceModelSectionGroup.cs
- TableLayoutSettingsTypeConverter.cs
- ContactManager.cs
- MatrixAnimationUsingKeyFrames.cs
- StringResourceManager.cs
- RelationshipEntry.cs
- ResourceDescriptionAttribute.cs
- InputBinding.cs
- IPEndPoint.cs
- UnauthorizedWebPart.cs
- BindingContext.cs
- ComboBox.cs
- XmlCountingReader.cs
- DefaultEventAttribute.cs
- DisposableCollectionWrapper.cs
- BaseResourcesBuildProvider.cs
- UiaCoreTypesApi.cs
- BCLDebug.cs
- AutoGeneratedField.cs
- FragmentQueryKB.cs
- LinkedResourceCollection.cs
- RangeBaseAutomationPeer.cs
- PassportIdentity.cs
- DesignerFrame.cs
- QueryExpr.cs
- LocalFileSettingsProvider.cs