Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / Net / System / _UriTypeConverter.cs / 1 / _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;
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DebuggerAttributes.cs
- HeaderLabel.cs
- BatchWriter.cs
- WinCategoryAttribute.cs
- UserCancellationException.cs
- HitTestParameters.cs
- OleStrCAMarshaler.cs
- OpenTypeLayoutCache.cs
- PrePrepareMethodAttribute.cs
- XmlSchemaAny.cs
- EventPrivateKey.cs
- Geometry.cs
- WindowsGraphicsCacheManager.cs
- NativeMethods.cs
- CryptoHelper.cs
- EnlistmentState.cs
- FileLogRecordStream.cs
- ExtendedPropertyCollection.cs
- InlineUIContainer.cs
- Compiler.cs
- TaskFileService.cs
- AutoGeneratedFieldProperties.cs
- PagerSettings.cs
- GraphicsState.cs
- MatrixTransform3D.cs
- XPathConvert.cs
- JsonDeserializer.cs
- ContentElementAutomationPeer.cs
- CultureNotFoundException.cs
- followingsibling.cs
- ToolStripOverflowButton.cs
- DecimalConverter.cs
- CompilationUnit.cs
- ComboBox.cs
- Debug.cs
- MaterializeFromAtom.cs
- XmlNamedNodeMap.cs
- iisPickupDirectory.cs
- DataPager.cs
- IssuanceLicense.cs
- _CommandStream.cs
- CodeSnippetCompileUnit.cs
- UriSectionData.cs
- InvalidFilterCriteriaException.cs
- DelimitedListTraceListener.cs
- CommandValueSerializer.cs
- MobileCategoryAttribute.cs
- WarningException.cs
- ServiceNotStartedException.cs
- unsafeIndexingFilterStream.cs
- AudioSignalProblemOccurredEventArgs.cs
- validationstate.cs
- XmlImplementation.cs
- HtmlProps.cs
- SystemInfo.cs
- AssociatedControlConverter.cs
- ValueTable.cs
- MiniCustomAttributeInfo.cs
- TextDpi.cs
- TimelineCollection.cs
- PixelFormatConverter.cs
- NullableDoubleAverageAggregationOperator.cs
- DataGridViewSelectedRowCollection.cs
- TraceContextRecord.cs
- X509CertificateStore.cs
- PropertyKey.cs
- ClientConfigurationSystem.cs
- ForceCopyBuildProvider.cs
- ConfigXmlWhitespace.cs
- DialogResultConverter.cs
- EventlogProvider.cs
- ContextMenuStripGroup.cs
- MetadataProperty.cs
- Form.cs
- NamedServiceModelExtensionCollectionElement.cs
- DateTimeUtil.cs
- DataViewSettingCollection.cs
- StylusPoint.cs
- DataGridViewRowCancelEventArgs.cs
- AutomationIdentifierGuids.cs
- RuntimeWrappedException.cs
- Number.cs
- LinkLabelLinkClickedEvent.cs
- Activator.cs
- Vector3D.cs
- WebControl.cs
- HttpHandlerAction.cs
- AnnotationObservableCollection.cs
- CodeParameterDeclarationExpression.cs
- BrushValueSerializer.cs
- FolderBrowserDialog.cs
- TokenBasedSetEnumerator.cs
- InfoCardRSAOAEPKeyExchangeDeformatter.cs
- ProfilePropertyNameValidator.cs
- SolidColorBrush.cs
- ObjectKeyFrameCollection.cs
- GeneralTransform.cs
- RijndaelManagedTransform.cs
- CmsInterop.cs
- RelationshipSet.cs