Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / System / Windows / DurationConverter.cs / 2 / 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
- OracleCommandSet.cs
- NodeFunctions.cs
- RIPEMD160Managed.cs
- SettingsPropertyValue.cs
- ExtractorMetadata.cs
- SiteMapDataSource.cs
- QueryResult.cs
- ContextMarshalException.cs
- CollectionAdapters.cs
- Metafile.cs
- ResXFileRef.cs
- DeviceFilterEditorDialog.cs
- PageParserFilter.cs
- TraceXPathNavigator.cs
- SQLDateTime.cs
- SoapSchemaMember.cs
- MemberHolder.cs
- ImageListImage.cs
- _AutoWebProxyScriptHelper.cs
- UnsafeCollabNativeMethods.cs
- AssemblyUtil.cs
- IteratorAsyncResult.cs
- ToolStripStatusLabel.cs
- WorkflowRuntimeServiceElementCollection.cs
- DataControlPagerLinkButton.cs
- RouteValueExpressionBuilder.cs
- CultureInfo.cs
- WindowsAuthenticationModule.cs
- DocobjHost.cs
- EntityViewGenerationConstants.cs
- FileLevelControlBuilderAttribute.cs
- PageParser.cs
- HijriCalendar.cs
- Vector3DConverter.cs
- ValueOfAction.cs
- RtfControls.cs
- HorizontalAlignConverter.cs
- MethodCallConverter.cs
- RsaSecurityTokenAuthenticator.cs
- Encoding.cs
- TransactionContextValidator.cs
- EventProvider.cs
- WeakEventTable.cs
- ImageListImage.cs
- Pair.cs
- HttpInputStream.cs
- UTF32Encoding.cs
- HashAlgorithm.cs
- DesignerCommandAdapter.cs
- FormattedTextSymbols.cs
- controlskin.cs
- PrintPreviewGraphics.cs
- MimeBasePart.cs
- FullTextState.cs
- RawStylusSystemGestureInputReport.cs
- AsyncSerializedWorker.cs
- GeneralTransformGroup.cs
- NetPipeSection.cs
- ItemCheckedEvent.cs
- AbsoluteQuery.cs
- HotCommands.cs
- TextSelectionHelper.cs
- ImpersonationContext.cs
- DesignerExtenders.cs
- BindUriHelper.cs
- Bits.cs
- Triangle.cs
- Compiler.cs
- ObjRef.cs
- EncoderParameter.cs
- RSAPKCS1KeyExchangeFormatter.cs
- IncrementalHitTester.cs
- MatrixUtil.cs
- MDIClient.cs
- IHttpResponseInternal.cs
- NetworkStream.cs
- FormatterConverter.cs
- DataIdProcessor.cs
- QilStrConcat.cs
- ContainerUIElement3D.cs
- DataSourceView.cs
- Light.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- PeerTransportSecuritySettings.cs
- ToolStripSplitStackLayout.cs
- Transactions.cs
- ServiceContractAttribute.cs
- PersonalizationProvider.cs
- OleDbException.cs
- TaiwanLunisolarCalendar.cs
- BitmapEffectGeneralTransform.cs
- ClientBuildManagerCallback.cs
- Compilation.cs
- LinkConverter.cs
- XPathNavigatorKeyComparer.cs
- DecoratedNameAttribute.cs
- ContractNamespaceAttribute.cs
- XsltArgumentList.cs
- DbDeleteCommandTree.cs
- MimeBasePart.cs