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
- TransformationRules.cs
- XPathDescendantIterator.cs
- UTF8Encoding.cs
- ProxyElement.cs
- TemplatePartAttribute.cs
- DataTableReaderListener.cs
- ViewManager.cs
- ImmutableCollection.cs
- XmlSchemaProviderAttribute.cs
- ToolStripItemEventArgs.cs
- DateTimeEditor.cs
- HasCopySemanticsAttribute.cs
- Roles.cs
- LinkClickEvent.cs
- Semaphore.cs
- MessageQuerySet.cs
- ZipIORawDataFileBlock.cs
- WindowsGraphicsWrapper.cs
- MatcherBuilder.cs
- AttributeCollection.cs
- XmlDocumentType.cs
- EntityDesignerDataSourceView.cs
- HwndSource.cs
- ResXResourceSet.cs
- RangeValuePattern.cs
- ILGenerator.cs
- VisualTarget.cs
- KoreanLunisolarCalendar.cs
- ExpressionBuilderContext.cs
- XmlQualifiedName.cs
- Utilities.cs
- PropVariant.cs
- AppSettingsSection.cs
- FixedSOMLineCollection.cs
- DataGridHeaderBorder.cs
- SharingService.cs
- MessageTransmitTraceRecord.cs
- Number.cs
- DesignerTransactionCloseEvent.cs
- HelloOperation11AsyncResult.cs
- DelegatingConfigHost.cs
- ParseHttpDate.cs
- TreeNodeStyle.cs
- ContentPresenter.cs
- CodeMemberEvent.cs
- StateWorkerRequest.cs
- TaskFactory.cs
- XamlPoint3DCollectionSerializer.cs
- ImageDesigner.cs
- UserMapPath.cs
- DialogResultConverter.cs
- VoiceChangeEventArgs.cs
- ObjectQuery_EntitySqlExtensions.cs
- Material.cs
- DefaultProfileManager.cs
- DataServiceException.cs
- HitTestResult.cs
- mactripleDES.cs
- NetPipeSectionData.cs
- VerificationAttribute.cs
- MainMenu.cs
- PrintDialog.cs
- AsyncOperationLifetimeManager.cs
- ZeroOpNode.cs
- EntitySqlQueryBuilder.cs
- TrackingWorkflowEventArgs.cs
- DataSourceHelper.cs
- CalendarDateRangeChangingEventArgs.cs
- TypeExtensionConverter.cs
- ManualResetEvent.cs
- Selector.cs
- NotifyIcon.cs
- InputProcessorProfilesLoader.cs
- TextEditorContextMenu.cs
- WindowsToolbarAsMenu.cs
- UnmanagedMarshal.cs
- FrameworkObject.cs
- DrawingBrush.cs
- HandlerBase.cs
- CodeAccessSecurityEngine.cs
- MultiSelectRootGridEntry.cs
- GridEntryCollection.cs
- Dispatcher.cs
- Wizard.cs
- SortFieldComparer.cs
- EdmPropertyAttribute.cs
- ExpressionVisitor.cs
- SByteConverter.cs
- ZipIOFileItemStream.cs
- FormsAuthentication.cs
- DataGridViewCheckBoxCell.cs
- SizeAnimationBase.cs
- Vector3DAnimation.cs
- DesignBindingEditor.cs
- WrapPanel.cs
- BoundsDrawingContextWalker.cs
- BitmapSizeOptions.cs
- CodeExpressionCollection.cs
- Select.cs
- CurrentChangingEventManager.cs