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
- RegionData.cs
- OptionUsage.cs
- MultiView.cs
- ResourceExpression.cs
- SqlTriggerContext.cs
- SystemThemeKey.cs
- XmlSchemaSequence.cs
- PreservationFileWriter.cs
- DispatchChannelSink.cs
- SmtpAuthenticationManager.cs
- TreeSet.cs
- ContextMenuAutomationPeer.cs
- WasAdminWrapper.cs
- DesignerView.Commands.cs
- ExtendedProperty.cs
- DefaultEventAttribute.cs
- COSERVERINFO.cs
- XmlValidatingReader.cs
- XmlNodeReader.cs
- TableLayout.cs
- WriteTimeStream.cs
- BindingListCollectionView.cs
- OdbcEnvironmentHandle.cs
- ViewGenerator.cs
- wmiprovider.cs
- FullTrustAssembly.cs
- hwndwrapper.cs
- ArgumentException.cs
- GeometryGroup.cs
- DependencyObjectType.cs
- Repeater.cs
- DbParameterCollection.cs
- DescendentsWalker.cs
- ReachNamespaceInfo.cs
- PrintPreviewGraphics.cs
- LostFocusEventManager.cs
- Composition.cs
- IgnoreSectionHandler.cs
- XmlSerializerObjectSerializer.cs
- Fonts.cs
- RelativeSource.cs
- ToolStripRenderEventArgs.cs
- TransformerInfoCollection.cs
- ConfigurationElementProperty.cs
- SamlSubjectStatement.cs
- MDIWindowDialog.cs
- AttributeSetAction.cs
- SiteOfOriginContainer.cs
- Span.cs
- SizeKeyFrameCollection.cs
- KeyNotFoundException.cs
- ValidatingReaderNodeData.cs
- ListViewItem.cs
- EntityClassGenerator.cs
- CompilerGeneratedAttribute.cs
- ParenExpr.cs
- EmptyStringExpandableObjectConverter.cs
- InputLanguageSource.cs
- FontDifferentiator.cs
- AssemblyHash.cs
- ToolBarOverflowPanel.cs
- CryptoConfig.cs
- CellParagraph.cs
- InteropAutomationProvider.cs
- ProxyElement.cs
- FormViewDeletedEventArgs.cs
- PolygonHotSpot.cs
- Separator.cs
- EntitySqlQueryCacheKey.cs
- WsatConfiguration.cs
- ExpressionBindingCollection.cs
- FreezableDefaultValueFactory.cs
- XhtmlBasicSelectionListAdapter.cs
- DataColumnCollection.cs
- ConnectionString.cs
- ServiceManagerHandle.cs
- CompilationSection.cs
- FormViewUpdatedEventArgs.cs
- EntityUtil.cs
- CollectionType.cs
- RegexCompiler.cs
- EntityKeyElement.cs
- SettingsBase.cs
- GC.cs
- OleDbInfoMessageEvent.cs
- SecurityPolicySection.cs
- Thread.cs
- PackageRelationshipCollection.cs
- Codec.cs
- Figure.cs
- TemplateColumn.cs
- InvalidPrinterException.cs
- DefaultEventAttribute.cs
- SqlMetaData.cs
- GlyphRunDrawing.cs
- DependencyPropertyAttribute.cs
- WorkerRequest.cs
- RegexTree.cs
- SessionPageStatePersister.cs
- WindowsScrollBar.cs