Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- AvTraceFormat.cs
- SpecularMaterial.cs
- Int64Animation.cs
- CqlGenerator.cs
- WebPartVerbCollection.cs
- CLRBindingWorker.cs
- SelectionRangeConverter.cs
- TextWriterTraceListener.cs
- TabItem.cs
- PanelStyle.cs
- SafeThemeHandle.cs
- AmbientProperties.cs
- EmbossBitmapEffect.cs
- DataGridTemplateColumn.cs
- ExchangeUtilities.cs
- ProfileServiceManager.cs
- SerializableTypeCodeDomSerializer.cs
- MyContact.cs
- SqlCacheDependencyDatabase.cs
- XmlnsDefinitionAttribute.cs
- CompositeTypefaceMetrics.cs
- DebuggerAttributes.cs
- DesignerDataSchemaClass.cs
- ValidationErrorInfo.cs
- ObjectView.cs
- DesignerObjectListAdapter.cs
- HttpRuntimeSection.cs
- OutputCacheProfile.cs
- PolyQuadraticBezierSegment.cs
- DataColumnChangeEvent.cs
- XmlTextReader.cs
- XmlTextEncoder.cs
- TableLayoutColumnStyleCollection.cs
- Native.cs
- FloatMinMaxAggregationOperator.cs
- BuildResult.cs
- XmlException.cs
- TextEditorCopyPaste.cs
- Schema.cs
- _ConnectStream.cs
- SqlBooleanMismatchVisitor.cs
- ConfigurationSettings.cs
- FacetChecker.cs
- DrawToolTipEventArgs.cs
- NativeMethods.cs
- PresentationAppDomainManager.cs
- TraceLog.cs
- ReadOnlyDataSource.cs
- SqlNotificationEventArgs.cs
- SegmentInfo.cs
- PropertyMetadata.cs
- AppSettings.cs
- ArrayWithOffset.cs
- SQLDouble.cs
- RoleServiceManager.cs
- SqlRowUpdatedEvent.cs
- StatusBarDrawItemEvent.cs
- ConstraintStruct.cs
- WebPartConnectionCollection.cs
- XPathSelfQuery.cs
- PartialClassGenerationTaskInternal.cs
- XmlElementCollection.cs
- BindingMAnagerBase.cs
- MouseEventArgs.cs
- InstanceKeyCollisionException.cs
- BoundColumn.cs
- DrawingBrush.cs
- VisualStyleTypesAndProperties.cs
- DiscreteKeyFrames.cs
- WebBrowserProgressChangedEventHandler.cs
- AssertFilter.cs
- SRGSCompiler.cs
- DecoderNLS.cs
- PropertyMetadata.cs
- TableRowCollection.cs
- ServiceOperationParameter.cs
- ButtonFlatAdapter.cs
- SqlTopReducer.cs
- DataGridSortCommandEventArgs.cs
- Msec.cs
- CrossSiteScriptingValidation.cs
- XhtmlBasicValidationSummaryAdapter.cs
- ExtenderProvidedPropertyAttribute.cs
- ParenthesizePropertyNameAttribute.cs
- Roles.cs
- SynchronousChannelMergeEnumerator.cs
- FixedStringLookup.cs
- GeometryGroup.cs
- QilLiteral.cs
- ColorDialog.cs
- Margins.cs
- HotSpotCollection.cs
- PauseStoryboard.cs
- HttpFileCollectionWrapper.cs
- SkipStoryboardToFill.cs
- VisualStyleRenderer.cs
- WindowsEditBox.cs
- PointHitTestResult.cs
- RowBinding.cs
- RandomNumberGenerator.cs