Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- TargetException.cs
- CanExecuteRoutedEventArgs.cs
- XmlObjectSerializerContext.cs
- _Events.cs
- AuthenticationManager.cs
- LogLogRecordEnumerator.cs
- SoapFormatExtensions.cs
- SwitchCase.cs
- UrlPath.cs
- SecurityContextSecurityTokenAuthenticator.cs
- EdmEntityTypeAttribute.cs
- DataBindEngine.cs
- CaseInsensitiveOrdinalStringComparer.cs
- SingleObjectCollection.cs
- OracleConnectionString.cs
- MimeMapping.cs
- CodeDomConfigurationHandler.cs
- Label.cs
- AdapterDictionary.cs
- ZipPackage.cs
- SortQuery.cs
- GradientStop.cs
- iisPickupDirectory.cs
- DesignBindingValueUIHandler.cs
- ValidationVisibilityAttribute.cs
- CodeEventReferenceExpression.cs
- COMException.cs
- OdbcConnectionOpen.cs
- ResourceContainer.cs
- TaskExtensions.cs
- StreamAsIStream.cs
- AsyncDataRequest.cs
- AutomationElementCollection.cs
- DesignerEventService.cs
- InstanceHandleReference.cs
- ViewStateModeByIdAttribute.cs
- HttpHandlerAction.cs
- MimeXmlReflector.cs
- DesignerCategoryAttribute.cs
- ValidationSummary.cs
- ActivationServices.cs
- BaseTemplateCodeDomTreeGenerator.cs
- HeaderUtility.cs
- PageCodeDomTreeGenerator.cs
- StatusBar.cs
- FormatterServices.cs
- TextTreeObjectNode.cs
- TargetPerspective.cs
- SubMenuStyleCollection.cs
- ResXResourceSet.cs
- DrawingCollection.cs
- FixedSOMFixedBlock.cs
- AppModelKnownContentFactory.cs
- TypedColumnHandler.cs
- RoutedEventConverter.cs
- AnimatedTypeHelpers.cs
- TabOrder.cs
- XmlReader.cs
- HasCopySemanticsAttribute.cs
- BroadcastEventHelper.cs
- DrawingBrush.cs
- ComponentDispatcherThread.cs
- EventPropertyMap.cs
- ReachPrintTicketSerializerAsync.cs
- EmbeddedObject.cs
- TypeDefinition.cs
- QilStrConcat.cs
- ExpressionBinding.cs
- DescendantQuery.cs
- JavaScriptString.cs
- SafeCryptHandles.cs
- CharStorage.cs
- StdValidatorsAndConverters.cs
- ISAPIWorkerRequest.cs
- Mapping.cs
- Wildcard.cs
- PeerUnsafeNativeMethods.cs
- SubMenuStyleCollectionEditor.cs
- BuildProvidersCompiler.cs
- WmlImageAdapter.cs
- DirectoryObjectSecurity.cs
- PropertyCondition.cs
- ViewStateException.cs
- IgnoreFileBuildProvider.cs
- TrackBarRenderer.cs
- webproxy.cs
- SupportsEventValidationAttribute.cs
- TableLayoutPanelCellPosition.cs
- StandardToolWindows.cs
- StringComparer.cs
- TransactionCache.cs
- smtppermission.cs
- Rect3DConverter.cs
- OleDbError.cs
- _NestedSingleAsyncResult.cs
- IsolatedStorageException.cs
- ELinqQueryState.cs
- XmlSerializerOperationGenerator.cs
- OracleEncoding.cs
- PointAnimationUsingPath.cs