Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. /*++ 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
- CompilationLock.cs
- RichTextBoxConstants.cs
- PriorityBindingExpression.cs
- TTSEngineTypes.cs
- DesignerCalendarAdapter.cs
- ChtmlTextWriter.cs
- AttributeXamlType.cs
- NativeMethods.cs
- DataContractSerializerMessageContractImporter.cs
- TempEnvironment.cs
- TextTreeObjectNode.cs
- SafeFileMappingHandle.cs
- RegexCharClass.cs
- XmlRootAttribute.cs
- SmtpException.cs
- BamlResourceDeserializer.cs
- TokenBasedSet.cs
- _SslState.cs
- SourceSwitch.cs
- DeviceSpecificChoiceCollection.cs
- GeometryConverter.cs
- XmlSchemaComplexContentRestriction.cs
- HttpCacheVaryByContentEncodings.cs
- ObjectSet.cs
- MultiBindingExpression.cs
- SerializationHelper.cs
- TypeResolver.cs
- HandleExceptionArgs.cs
- messageonlyhwndwrapper.cs
- EmptyStringExpandableObjectConverter.cs
- UnsafeNativeMethods.cs
- TimeSpanStorage.cs
- TimeZoneInfo.cs
- WebBrowserUriTypeConverter.cs
- OutputCacheSettings.cs
- OLEDB_Enum.cs
- FrameworkRichTextComposition.cs
- CachedTypeface.cs
- SpellerHighlightLayer.cs
- StopRoutingHandler.cs
- _SingleItemRequestCache.cs
- FormParameter.cs
- PrintEvent.cs
- XmlBinaryWriter.cs
- MobileErrorInfo.cs
- X509Extension.cs
- Line.cs
- PathGeometry.cs
- FileInfo.cs
- Blend.cs
- RegionData.cs
- InputProcessorProfilesLoader.cs
- SortedSetDebugView.cs
- ArithmeticException.cs
- CustomServiceCredentials.cs
- XmlSchemaSimpleContent.cs
- WebConfigurationHost.cs
- ConfigurationLoader.cs
- ArrayMergeHelper.cs
- RepeaterItem.cs
- Matrix.cs
- HtmlInputFile.cs
- TcpClientSocketManager.cs
- NodeInfo.cs
- ConfigurationErrorsException.cs
- ConfigsHelper.cs
- EdmMember.cs
- PipelineModuleStepContainer.cs
- PathFigureCollection.cs
- CellTreeNodeVisitors.cs
- LogicalExpr.cs
- ProofTokenCryptoHandle.cs
- COAUTHIDENTITY.cs
- ResourceReferenceExpression.cs
- WebPartMovingEventArgs.cs
- MouseGestureValueSerializer.cs
- OperationParameterInfo.cs
- FileIOPermission.cs
- TabletDevice.cs
- Converter.cs
- DropTarget.cs
- DocumentGridPage.cs
- TabControl.cs
- Axis.cs
- HttpCookiesSection.cs
- Int32CollectionValueSerializer.cs
- ColumnMapProcessor.cs
- AuthorizationRuleCollection.cs
- InvalidEnumArgumentException.cs
- XPathDocument.cs
- Emitter.cs
- WebSysDescriptionAttribute.cs
- DataViewSetting.cs
- BrowserInteropHelper.cs
- UpDownBase.cs
- SchemaCreator.cs
- RecognitionEventArgs.cs
- PublisherIdentityPermission.cs
- Graph.cs
- StyleXamlTreeBuilder.cs