Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / DurationConverter.cs / 1305600 / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- RawUIStateInputReport.cs
- CommentAction.cs
- SourceFileBuildProvider.cs
- EntityDataSourceViewSchema.cs
- DependencyPropertyKind.cs
- Visual3D.cs
- DrawingCollection.cs
- TemplateControl.cs
- Model3D.cs
- StringDictionaryCodeDomSerializer.cs
- BigInt.cs
- XmlPreloadedResolver.cs
- SerializationHelper.cs
- ContextMenu.cs
- SafePEFileHandle.cs
- SoapSchemaExporter.cs
- AnonymousIdentificationModule.cs
- CommunicationException.cs
- Pkcs9Attribute.cs
- RichTextBoxAutomationPeer.cs
- WsatAdminException.cs
- ResizeGrip.cs
- CurrencyManager.cs
- QueueSurrogate.cs
- ReliabilityContractAttribute.cs
- OverrideMode.cs
- ButtonStandardAdapter.cs
- XmlChildEnumerator.cs
- ExpressionWriter.cs
- DataGridViewTopRowAccessibleObject.cs
- ComponentEditorForm.cs
- SrgsText.cs
- MatrixConverter.cs
- CompModSwitches.cs
- arabicshape.cs
- HttpApplication.cs
- EastAsianLunisolarCalendar.cs
- BindableTemplateBuilder.cs
- Constraint.cs
- AncillaryOps.cs
- DynamicEntity.cs
- SetIterators.cs
- ProcessProtocolHandler.cs
- DependencyPropertyDescriptor.cs
- HMACSHA512.cs
- CachedBitmap.cs
- WeakReferenceList.cs
- WsdlHelpGeneratorElement.cs
- CompleteWizardStep.cs
- HtmlImage.cs
- ListViewItemSelectionChangedEvent.cs
- CachedBitmap.cs
- Internal.cs
- QueryableFilterUserControl.cs
- FlagPanel.cs
- Constants.cs
- SQLMoneyStorage.cs
- HandleRef.cs
- DependencyObjectPropertyDescriptor.cs
- PerfCounters.cs
- DocumentGridContextMenu.cs
- CmsInterop.cs
- AvTrace.cs
- DataGridCellsPanel.cs
- UInt32Converter.cs
- MarkupExtensionParser.cs
- FlowDocumentPaginator.cs
- DataObjectAttribute.cs
- SelectionListComponentEditor.cs
- FontCollection.cs
- SynchronizedDispatch.cs
- UrlMappingsModule.cs
- StreamingContext.cs
- Directory.cs
- Quad.cs
- TreeNodeConverter.cs
- WindowsEditBox.cs
- BitmapPalettes.cs
- HttpListenerRequestUriBuilder.cs
- ContainerParaClient.cs
- Interlocked.cs
- XmlEventCache.cs
- BeginEvent.cs
- CodeVariableDeclarationStatement.cs
- EventsTab.cs
- HttpContext.cs
- TextDecorationCollectionConverter.cs
- HexParser.cs
- DocumentOrderQuery.cs
- ServicePointManagerElement.cs
- EntityContainerEmitter.cs
- BamlTreeUpdater.cs
- DynamicResourceExtensionConverter.cs
- SQLGuid.cs
- Triplet.cs
- HostSecurityManager.cs
- ListBox.cs
- ChangeBlockUndoRecord.cs
- HtmlTableCell.cs
- AmbiguousMatchException.cs