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
- ScriptingRoleServiceSection.cs
- DependentTransaction.cs
- RequestCacheManager.cs
- DocumentPaginator.cs
- UIServiceHelper.cs
- TraceRecord.cs
- SR.cs
- ValueUtilsSmi.cs
- HttpHeaderCollection.cs
- MouseButton.cs
- XmlQueryTypeFactory.cs
- ProtocolsConfiguration.cs
- TextBoxAutomationPeer.cs
- WorkflowRuntimeServiceElementCollection.cs
- Module.cs
- SchemaLookupTable.cs
- CheckBoxField.cs
- CodeMemberEvent.cs
- SqlConnectionPoolProviderInfo.cs
- SiblingIterators.cs
- SmtpNtlmAuthenticationModule.cs
- RIPEMD160.cs
- CodeArrayIndexerExpression.cs
- Page.cs
- Matrix3D.cs
- SqlBooleanizer.cs
- ResourceReferenceKeyNotFoundException.cs
- DisableDpiAwarenessAttribute.cs
- GestureRecognizer.cs
- HttpModuleCollection.cs
- loginstatus.cs
- ProbeMatchesCD1.cs
- Bezier.cs
- NativeMethods.cs
- DataGridViewAutoSizeColumnsModeEventArgs.cs
- Panel.cs
- OrderedDictionaryStateHelper.cs
- ITreeGenerator.cs
- IsolationInterop.cs
- HttpHandlerAction.cs
- TimeoutValidationAttribute.cs
- MtomMessageEncodingElement.cs
- BinaryObjectWriter.cs
- XmlConvert.cs
- XmlSchemaComplexContentRestriction.cs
- Decoder.cs
- ErrorFormatter.cs
- WebSysDescriptionAttribute.cs
- XsltQilFactory.cs
- filewebresponse.cs
- ParagraphResult.cs
- EventLogPermissionHolder.cs
- DelegateSerializationHolder.cs
- EventManager.cs
- CodeRegionDirective.cs
- GridEntryCollection.cs
- ReadContentAsBinaryHelper.cs
- NamespaceListProperty.cs
- CachedPathData.cs
- DataFormat.cs
- ObjectDataSource.cs
- ScriptControlManager.cs
- ping.cs
- DesignerActionListCollection.cs
- ExpressionBinding.cs
- SqlNodeAnnotations.cs
- XamlToRtfWriter.cs
- DataGridViewCellCollection.cs
- HybridDictionary.cs
- SID.cs
- ResourceExpression.cs
- arabicshape.cs
- ProcessHostMapPath.cs
- ListCollectionView.cs
- FtpCachePolicyElement.cs
- SmiRecordBuffer.cs
- DataGridHelper.cs
- ReadOnlyNameValueCollection.cs
- Accessors.cs
- ContainerControl.cs
- DocumentPage.cs
- EntityEntry.cs
- BaseUriHelper.cs
- ProxySimple.cs
- PathStreamGeometryContext.cs
- StreamReader.cs
- FocusWithinProperty.cs
- ConfigXmlSignificantWhitespace.cs
- PartialTrustVisibleAssemblyCollection.cs
- TextBlockAutomationPeer.cs
- InstancePersistenceException.cs
- SQLSingleStorage.cs
- ContentElement.cs
- AutomationProperty.cs
- TCPClient.cs
- StringAnimationUsingKeyFrames.cs
- RadioButtonPopupAdapter.cs
- QueryReaderSettings.cs
- EncryptedPackage.cs
- WebPartUserCapability.cs