Code:
/ 4.0 / 4.0 / 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.
//------------------------------------------------------------------------------
// 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
- CodeTypeOfExpression.cs
- SapiInterop.cs
- GenericPrincipal.cs
- AttachedAnnotationChangedEventArgs.cs
- hresults.cs
- DataGridViewTextBoxColumn.cs
- BindingExpression.cs
- TraceData.cs
- Positioning.cs
- WmlListAdapter.cs
- AppSettingsExpressionBuilder.cs
- EventLogPermissionEntryCollection.cs
- MetadataArtifactLoaderCompositeFile.cs
- MSAANativeProvider.cs
- DefaultMemberAttribute.cs
- UnknownBitmapEncoder.cs
- GeometryCollection.cs
- ExpressionCopier.cs
- Calendar.cs
- SaveFileDialog.cs
- IItemContainerGenerator.cs
- NextPreviousPagerField.cs
- DataSpaceManager.cs
- Parameter.cs
- BitmapEffectDrawing.cs
- Site.cs
- DataServiceHostFactory.cs
- WMIInterop.cs
- ResourceExpressionBuilder.cs
- NameObjectCollectionBase.cs
- MethodImplAttribute.cs
- SendMessageChannelCache.cs
- PrimitiveList.cs
- ProfileProvider.cs
- StringConverter.cs
- FormViewUpdateEventArgs.cs
- DesignerContextDescriptor.cs
- KnownBoxes.cs
- ListViewGroup.cs
- PreDigestedSignedInfo.cs
- CalculatedColumn.cs
- SingleAnimation.cs
- SizeChangedInfo.cs
- DescendantQuery.cs
- TextTreePropertyUndoUnit.cs
- DiscreteKeyFrames.cs
- NumericExpr.cs
- IncrementalHitTester.cs
- StateInitializationDesigner.cs
- PresentationTraceSources.cs
- WorkflowCreationContext.cs
- ScriptReference.cs
- TargetControlTypeCache.cs
- InstanceNameConverter.cs
- GridViewColumnHeaderAutomationPeer.cs
- BoundingRectTracker.cs
- ObjectDataSourceEventArgs.cs
- UTF32Encoding.cs
- ExpressionEvaluator.cs
- SqlInfoMessageEvent.cs
- WorkflowRequestContext.cs
- SafeReversePInvokeHandle.cs
- SafeProcessHandle.cs
- EncoderReplacementFallback.cs
- UncommonField.cs
- Registry.cs
- DataGridPageChangedEventArgs.cs
- NetPeerTcpBindingElement.cs
- AutoCompleteStringCollection.cs
- InstalledFontCollection.cs
- SafeIUnknown.cs
- Predicate.cs
- HttpGetProtocolReflector.cs
- TrackingProfileDeserializationException.cs
- WindowHideOrCloseTracker.cs
- ClientCultureInfo.cs
- EpmHelper.cs
- Int32CAMarshaler.cs
- MarshalByValueComponent.cs
- baseaxisquery.cs
- SHA1Cng.cs
- SafeProcessHandle.cs
- ByteStorage.cs
- Size.cs
- MenuBase.cs
- WebPartDescription.cs
- FilterFactory.cs
- PreviewPageInfo.cs
- RadioButtonFlatAdapter.cs
- ResourceProviderFactory.cs
- ExpressionLexer.cs
- AuthorizationBehavior.cs
- AsyncCompletedEventArgs.cs
- TextTreeText.cs
- DataGridViewButtonColumn.cs
- TextElementCollection.cs
- SingleConverter.cs
- FontDialog.cs
- ImageAutomationPeer.cs
- PreservationFileReader.cs