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
- HttpModuleCollection.cs
- TypeConverterBase.cs
- CalendarDay.cs
- ObjectSecurityT.cs
- CatalogPartCollection.cs
- AutomationEventArgs.cs
- Win32PrintDialog.cs
- PropertyEntry.cs
- RawStylusActions.cs
- DateTimeFormatInfoScanner.cs
- AddressHeaderCollection.cs
- ColumnMap.cs
- DataRowView.cs
- ToolStripDropDownItem.cs
- TcpProcessProtocolHandler.cs
- MatrixTransform3D.cs
- UnsafePeerToPeerMethods.cs
- XmlToDatasetMap.cs
- SqlRewriteScalarSubqueries.cs
- JoinSymbol.cs
- RectangleConverter.cs
- ServiceXNameTypeConverter.cs
- DataBinder.cs
- PKCS1MaskGenerationMethod.cs
- MarginsConverter.cs
- SystemGatewayIPAddressInformation.cs
- PenThreadWorker.cs
- Site.cs
- SatelliteContractVersionAttribute.cs
- ClockGroup.cs
- CustomErrorsSection.cs
- TypeContext.cs
- NativeMethods.cs
- OutputCacheProfileCollection.cs
- ShutDownListener.cs
- LinkDesigner.cs
- UserNamePasswordClientCredential.cs
- sqlpipe.cs
- MetadataFile.cs
- MasterPageCodeDomTreeGenerator.cs
- MenuEventArgs.cs
- AnnotationService.cs
- RulePatternOps.cs
- FileAuthorizationModule.cs
- ParallelDesigner.cs
- XmlAtomicValue.cs
- DocumentViewerBase.cs
- RowParagraph.cs
- DbDeleteCommandTree.cs
- XmlMemberMapping.cs
- OracleColumn.cs
- CommaDelimitedStringAttributeCollectionConverter.cs
- SqlConnectionManager.cs
- ButtonAutomationPeer.cs
- DefaultMemberAttribute.cs
- OLEDB_Enum.cs
- CellPartitioner.cs
- BindUriHelper.cs
- ImageClickEventArgs.cs
- Interfaces.cs
- FillBehavior.cs
- TreeViewImageIndexConverter.cs
- NonBatchDirectoryCompiler.cs
- IconBitmapDecoder.cs
- SessionSwitchEventArgs.cs
- DataBoundLiteralControl.cs
- StorageSetMapping.cs
- DbModificationCommandTree.cs
- ChangeNode.cs
- Util.cs
- RelationshipWrapper.cs
- indexingfiltermarshaler.cs
- XmlILOptimizerVisitor.cs
- SerialPinChanges.cs
- QueryConverter.cs
- ThreadInterruptedException.cs
- HttpAsyncResult.cs
- TransportContext.cs
- ReadOnlyHierarchicalDataSourceView.cs
- RightsManagementPermission.cs
- DocumentXmlWriter.cs
- AttachmentCollection.cs
- XmlSchemaAttribute.cs
- UInt32Converter.cs
- ThreadStartException.cs
- ColorConvertedBitmapExtension.cs
- IdnElement.cs
- ObjectFullSpanRewriter.cs
- OdbcEnvironment.cs
- Rules.cs
- RuntimeComponentFilter.cs
- PtsHost.cs
- TableAdapterManagerNameHandler.cs
- DataGridViewCellValueEventArgs.cs
- CapiHashAlgorithm.cs
- HashAlgorithm.cs
- ParameterElementCollection.cs
- ExeContext.cs
- ActivityXRefConverter.cs
- MSG.cs