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
- SoapEnumAttribute.cs
- LinearKeyFrames.cs
- DBDataPermissionAttribute.cs
- AuthenticateEventArgs.cs
- DateTimeStorage.cs
- ChannelBinding.cs
- BindableTemplateBuilder.cs
- TransformerInfoCollection.cs
- FunctionDetailsReader.cs
- PaperSize.cs
- ExitEventArgs.cs
- TextTreeTextBlock.cs
- SortFieldComparer.cs
- XmlQuerySequence.cs
- JobCollate.cs
- StaticDataManager.cs
- FlowSwitchDesigner.xaml.cs
- InkSerializer.cs
- followingquery.cs
- FrugalList.cs
- ElementNotEnabledException.cs
- WindowsFormsSynchronizationContext.cs
- StorageMappingFragment.cs
- ProxyFragment.cs
- HttpRuntimeSection.cs
- HelpKeywordAttribute.cs
- OrderPreservingSpoolingTask.cs
- KeySplineConverter.cs
- Console.cs
- BindingManagerDataErrorEventArgs.cs
- Perspective.cs
- LiteralTextContainerControlBuilder.cs
- FamilyCollection.cs
- ToolboxComponentsCreatedEventArgs.cs
- LinqMaximalSubtreeNominator.cs
- XmlRootAttribute.cs
- ISessionStateStore.cs
- FilterEventArgs.cs
- EditorAttribute.cs
- CodeSnippetExpression.cs
- ItemMap.cs
- DataGridColumnHeaderCollection.cs
- VBCodeProvider.cs
- PersonalizationAdministration.cs
- ChangeToolStripParentVerb.cs
- GPStream.cs
- PointCollectionConverter.cs
- ping.cs
- PieceDirectory.cs
- invalidudtexception.cs
- WebPartEditVerb.cs
- HideDisabledControlAdapter.cs
- ChtmlCalendarAdapter.cs
- UInt32Storage.cs
- ServiceEndpointAssociationProvider.cs
- WindowsFormsSynchronizationContext.cs
- FollowerQueueCreator.cs
- SemanticTag.cs
- MarshalByRefObject.cs
- ScrollChrome.cs
- ConnectionPoint.cs
- WebBrowser.cs
- XLinq.cs
- ClearCollection.cs
- RTLAwareMessageBox.cs
- ClientFormsAuthenticationCredentials.cs
- InputMethodStateTypeInfo.cs
- BindMarkupExtensionSerializer.cs
- ResolvedKeyFrameEntry.cs
- InsufficientMemoryException.cs
- CodeSnippetStatement.cs
- EmptyEnumerable.cs
- DataControlHelper.cs
- LingerOption.cs
- StringUtil.cs
- DotExpr.cs
- NativeMethods.cs
- SaveFileDialog.cs
- ExpressionEditorSheet.cs
- WindowsHyperlink.cs
- EventRouteFactory.cs
- DragStartedEventArgs.cs
- MgmtResManager.cs
- QueryContinueDragEvent.cs
- DataGridView.cs
- SystemException.cs
- ObjectDataSourceStatusEventArgs.cs
- Propagator.Evaluator.cs
- PropertyBuilder.cs
- PenLineJoinValidation.cs
- StreamingContext.cs
- ModulesEntry.cs
- AuthorizationRule.cs
- BamlRecordHelper.cs
- XmlSchemaCompilationSettings.cs
- StreamUpdate.cs
- AccessText.cs
- XmlNamespaceMappingCollection.cs
- ColumnPropertiesGroup.cs
- DefaultCommandExtensionCallback.cs