Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Net / System / _UriTypeConverter.cs / 1305376 / _UriTypeConverter.cs
/*++
Copyright (c) 2003 Microsoft Corporation
Module Name:
_UriTypeConverter.cs
Abstract:
A default TypeConverter implementation for the System.Uri type
Revision History:
--*/
namespace System {
using System.Globalization;
using System.ComponentModel;
using System.ComponentModel.Design.Serialization;
using System.Reflection;
//
// A limited conversion is implemented such as to and from string
// A conversion to InstanceDescriptor is also provided for design time support.
//
public class UriTypeConverter: TypeConverter
{
private UriKind m_UriKind;
public UriTypeConverter() : this(UriKind.RelativeOrAbsolute) { }
internal UriTypeConverter(UriKind uriKind)
{
m_UriKind = uriKind;
}
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
{
if (sourceType == null)
throw new ArgumentNullException("sourceType");
if (sourceType == typeof(string))
return true;
if (typeof(Uri).IsAssignableFrom(sourceType))
return true;
return base.CanConvertFrom(context, sourceType);
}
//
public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
{
if (destinationType == typeof(InstanceDescriptor))
return true;
if (destinationType == typeof(string))
return true;
if (destinationType == typeof(Uri))
return true;
return base.CanConvertTo(context, destinationType);
}
//
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
{
string uriString = value as string;
if (uriString != null)
return new Uri(uriString, m_UriKind);
Uri uri = value as Uri;
if (uri != null)
return new Uri(uri.OriginalString,
m_UriKind == UriKind.RelativeOrAbsolute ? uri.IsAbsoluteUri ? UriKind.Absolute : UriKind.Relative : m_UriKind);
return base.ConvertFrom(context, culture, value);
}
//
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
{
Uri uri = value as Uri;
if (uri != null && destinationType == typeof(InstanceDescriptor))
{
ConstructorInfo ci = typeof(Uri).GetConstructor(BindingFlags.Public | BindingFlags.Instance, null, new Type[]{typeof(string), typeof(UriKind)}, null);
return new InstanceDescriptor(ci, new object[] { uri.OriginalString,
m_UriKind == UriKind.RelativeOrAbsolute ? uri.IsAbsoluteUri ? UriKind.Absolute : UriKind.Relative : m_UriKind });
}
if (uri != null && destinationType == typeof(string))
return uri.OriginalString;
if (uri != null && destinationType == typeof(Uri))
return new Uri(uri.OriginalString,
m_UriKind == UriKind.RelativeOrAbsolute ? uri.IsAbsoluteUri ? UriKind.Absolute : UriKind.Relative : m_UriKind);
return base.ConvertTo(context, culture, value, destinationType);
}
//
public override bool IsValid(ITypeDescriptorContext context, object value)
{
string str = value as string;
Uri temp;
if (str != null)
return Uri.TryCreate(str, m_UriKind, out temp);
return value is Uri;
}
}
}
// 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
- OdbcErrorCollection.cs
- XComponentModel.cs
- ProviderSettings.cs
- ObjectParameter.cs
- MetadataPropertyCollection.cs
- MemberHolder.cs
- FacetValues.cs
- SqlReferenceCollection.cs
- CodeTypeReference.cs
- PersistencePipeline.cs
- x509utils.cs
- ThreadPool.cs
- PropertyTabChangedEvent.cs
- FormatterConverter.cs
- SubpageParagraph.cs
- DataReaderContainer.cs
- SqlRowUpdatedEvent.cs
- PropertyMap.cs
- HiddenFieldPageStatePersister.cs
- UndoManager.cs
- CqlParser.cs
- mongolianshape.cs
- Metafile.cs
- CryptoApi.cs
- ThicknessAnimation.cs
- LogicalCallContext.cs
- WebControl.cs
- Quaternion.cs
- AppDomainManager.cs
- InstanceData.cs
- ColorIndependentAnimationStorage.cs
- SqlDataSourceCommandEventArgs.cs
- XPathChildIterator.cs
- PropertyDescriptorCollection.cs
- RecordBuilder.cs
- AdPostCacheSubstitution.cs
- SchemaImporter.cs
- CompositeCollection.cs
- IssuedTokenClientCredential.cs
- ButtonField.cs
- SizeLimitedCache.cs
- BitmapPalette.cs
- PageAsyncTaskManager.cs
- AuthStoreRoleProvider.cs
- HttpTransportManager.cs
- MemberHolder.cs
- MsmqBindingMonitor.cs
- RectValueSerializer.cs
- KeyValueInternalCollection.cs
- BuildProvider.cs
- InfoCardBinaryReader.cs
- BidirectionalDictionary.cs
- RowUpdatingEventArgs.cs
- HtmlProps.cs
- DataChangedEventManager.cs
- ProcessModuleCollection.cs
- BigInt.cs
- UInt16Converter.cs
- FileVersionInfo.cs
- RuleSet.cs
- DataGridViewAccessibleObject.cs
- RuleInfoComparer.cs
- WorkflowViewManager.cs
- DrawingDrawingContext.cs
- ViewStateModeByIdAttribute.cs
- MarshalByRefObject.cs
- DataView.cs
- ErrorHandlingReceiver.cs
- DoubleConverter.cs
- IsolatedStorageFilePermission.cs
- TextBreakpoint.cs
- RSACryptoServiceProvider.cs
- DefaultTextStoreTextComposition.cs
- DbDataAdapter.cs
- ErrorRuntimeConfig.cs
- RadioButtonFlatAdapter.cs
- CodeIdentifiers.cs
- DataReceivedEventArgs.cs
- ProfileProvider.cs
- XmlILModule.cs
- DebugTracing.cs
- ExpressionBuilder.cs
- EntityDataSourceValidationException.cs
- IWorkflowDebuggerService.cs
- ToolStripItemBehavior.cs
- DefaultEventAttribute.cs
- CodeDOMProvider.cs
- GeometryModel3D.cs
- TargetInvocationException.cs
- JavascriptCallbackBehaviorAttribute.cs
- EntityUtil.cs
- RolePrincipal.cs
- RectAnimation.cs
- SchemaImporterExtensionElementCollection.cs
- DeploymentSection.cs
- TableAdapterManagerNameHandler.cs
- XsltArgumentList.cs
- UnSafeCharBuffer.cs
- MetadataCache.cs
- SQLInt32Storage.cs