Code:
/ DotNET / DotNET / 8.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
- ApplicationGesture.cs
- TextTreeExtractElementUndoUnit.cs
- ThicknessConverter.cs
- TrackingConditionCollection.cs
- TextBox.cs
- safesecurityhelperavalon.cs
- AutomationElementIdentifiers.cs
- InternalControlCollection.cs
- XmlQueryCardinality.cs
- ServiceOperation.cs
- TextDecoration.cs
- SystemResourceKey.cs
- PreviewPageInfo.cs
- RowType.cs
- GridViewRow.cs
- PartialTrustVisibleAssemblyCollection.cs
- Bold.cs
- Error.cs
- BatchWriter.cs
- SelectionProviderWrapper.cs
- EventPropertyMap.cs
- EnvironmentPermission.cs
- PngBitmapDecoder.cs
- TableRowGroup.cs
- Animatable.cs
- DrawingBrush.cs
- TdsParser.cs
- BStrWrapper.cs
- DirectoryInfo.cs
- SmtpReplyReader.cs
- EtwTrace.cs
- UserControlCodeDomTreeGenerator.cs
- PointCollectionConverter.cs
- UnsafeNativeMethods.cs
- MetaForeignKeyColumn.cs
- CheckBox.cs
- _CookieModule.cs
- EntityDataSourceMemberPath.cs
- AssemblyHash.cs
- MessagePropertyFilter.cs
- ObjectView.cs
- ObjectStateEntryDbDataRecord.cs
- PrefixQName.cs
- Visitor.cs
- ListSourceHelper.cs
- DataListItem.cs
- _SSPISessionCache.cs
- FileChangesMonitor.cs
- UrlPropertyAttribute.cs
- TraceUtility.cs
- RegexCode.cs
- PartialTrustVisibleAssembly.cs
- TextInfo.cs
- updatecommandorderer.cs
- XmlSchemaType.cs
- FontStretch.cs
- TcpTransportManager.cs
- MemberPath.cs
- CodeDelegateInvokeExpression.cs
- AttributeSetAction.cs
- AdornerPresentationContext.cs
- XmlILOptimizerVisitor.cs
- PingReply.cs
- CompressedStack.cs
- PolygonHotSpot.cs
- Crc32.cs
- ValueOfAction.cs
- PeerCollaboration.cs
- SQLDateTimeStorage.cs
- StoragePropertyMapping.cs
- Exceptions.cs
- XDRSchema.cs
- AspNetSynchronizationContext.cs
- CompilerWrapper.cs
- ProcessManager.cs
- TagPrefixCollection.cs
- loginstatus.cs
- UInt16Converter.cs
- OutOfMemoryException.cs
- TriggerCollection.cs
- DataRowExtensions.cs
- Number.cs
- CompatibleIComparer.cs
- Style.cs
- MasterPageCodeDomTreeGenerator.cs
- FileDocument.cs
- HostVisual.cs
- SqlRecordBuffer.cs
- AuthorizationSection.cs
- SocketInformation.cs
- ToolStripOverflowButton.cs
- WSFederationHttpBindingCollectionElement.cs
- EnumConverter.cs
- LookupBindingPropertiesAttribute.cs
- WebHttpElement.cs
- PrimitiveCodeDomSerializer.cs
- SafeIUnknown.cs
- TypeConverterMarkupExtension.cs
- ItemList.cs
- Vector.cs