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
- ProcessStartInfo.cs
- precedingsibling.cs
- XmlQueryType.cs
- ControlParser.cs
- CngProvider.cs
- SendParametersContent.cs
- SingleAnimationBase.cs
- DataReaderContainer.cs
- SafeSerializationManager.cs
- BamlRecords.cs
- DataGridLinkButton.cs
- DataRowCollection.cs
- EdmProviderManifest.cs
- _RegBlobWebProxyDataBuilder.cs
- TimeIntervalCollection.cs
- ProfileInfo.cs
- cookiecontainer.cs
- RadioButton.cs
- DataControlImageButton.cs
- GroupLabel.cs
- AppliedDeviceFiltersEditor.cs
- SmiContext.cs
- DeviceContext.cs
- HitTestDrawingContextWalker.cs
- DataControlFieldCollection.cs
- Attributes.cs
- XmlILConstructAnalyzer.cs
- LogicalTreeHelper.cs
- ActivationWorker.cs
- arclist.cs
- ResourceLoader.cs
- AuthenticatedStream.cs
- CSharpCodeProvider.cs
- SeekableReadStream.cs
- RelationHandler.cs
- TrackBar.cs
- RevocationPoint.cs
- SqlDataSourceStatusEventArgs.cs
- HostingEnvironmentException.cs
- HiddenFieldPageStatePersister.cs
- Journal.cs
- Int16KeyFrameCollection.cs
- Aggregates.cs
- DbProviderFactories.cs
- ListMarkerSourceInfo.cs
- AttributeInfo.cs
- EnumConverter.cs
- DBConcurrencyException.cs
- DbTransaction.cs
- MinimizableAttributeTypeConverter.cs
- DoubleKeyFrameCollection.cs
- ConvertersCollection.cs
- HashAlgorithm.cs
- Ipv6Element.cs
- SkewTransform.cs
- StorageRoot.cs
- ZipIOLocalFileHeader.cs
- XamlStream.cs
- IisTraceWebEventProvider.cs
- RangeExpression.cs
- Configuration.cs
- _UriSyntax.cs
- ResourcePool.cs
- SqlProfileProvider.cs
- StateManagedCollection.cs
- PointAnimationClockResource.cs
- ObjectPersistData.cs
- XmlnsDefinitionAttribute.cs
- CodeTypeParameterCollection.cs
- TreeViewHitTestInfo.cs
- TrackingMemoryStreamFactory.cs
- FileDialogCustomPlace.cs
- BaseCodeDomTreeGenerator.cs
- DialogWindow.cs
- Vector3DConverter.cs
- ScriptResourceAttribute.cs
- GridPatternIdentifiers.cs
- AstTree.cs
- WebPartEventArgs.cs
- RsaSecurityToken.cs
- NonVisualControlAttribute.cs
- NamedPipeTransportSecurity.cs
- DbParameterCollectionHelper.cs
- XslTransform.cs
- SecurityContextSecurityToken.cs
- Link.cs
- KeyEventArgs.cs
- HWStack.cs
- CommonObjectSecurity.cs
- Pens.cs
- SkinBuilder.cs
- HttpServerUtilityBase.cs
- BuildManager.cs
- InternalResources.cs
- XmlEntityReference.cs
- InheritanceAttribute.cs
- TextElementEnumerator.cs
- CommandManager.cs
- cookiecollection.cs
- SmiGettersStream.cs