Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Net / System / _UriTypeConverter.cs / 1305376 / _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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ColumnHeader.cs
- Solver.cs
- InlineUIContainer.cs
- ComplusEndpointConfigContainer.cs
- ThumbButtonInfoCollection.cs
- SimpleWorkerRequest.cs
- UrlPath.cs
- FixedSOMTableRow.cs
- NamespaceListProperty.cs
- MailDefinition.cs
- ListViewGroup.cs
- DataListItemCollection.cs
- SecurityException.cs
- ReferenceEqualityComparer.cs
- DetailsViewModeEventArgs.cs
- DataRecord.cs
- TypeGeneratedEventArgs.cs
- HostProtectionException.cs
- DataGridViewLayoutData.cs
- TextDecoration.cs
- WebControl.cs
- XmlEncodedRawTextWriter.cs
- DefaultValueConverter.cs
- FileDialog.cs
- WebPartCatalogAddVerb.cs
- AppSettingsSection.cs
- WebBrowserNavigatingEventHandler.cs
- DesignerAttribute.cs
- DecimalKeyFrameCollection.cs
- ExecutionEngineException.cs
- PenCursorManager.cs
- RemotingAttributes.cs
- StylusDownEventArgs.cs
- TraceSection.cs
- DocumentPageTextView.cs
- CngProperty.cs
- SourceChangedEventArgs.cs
- MouseOverProperty.cs
- AlphaSortedEnumConverter.cs
- MatrixTransform3D.cs
- PathFigure.cs
- DragSelectionMessageFilter.cs
- AttributedMetaModel.cs
- BoolExpressionVisitors.cs
- CodeConditionStatement.cs
- EdmProperty.cs
- HwndKeyboardInputProvider.cs
- ReadOnlyCollectionBase.cs
- control.ime.cs
- wmiprovider.cs
- SafeNativeMethodsCLR.cs
- ContentFilePart.cs
- InputLanguageManager.cs
- ComponentCollection.cs
- ElementFactory.cs
- ObjectPersistData.cs
- SslStream.cs
- EntityTypeEmitter.cs
- WebPartConnectionsEventArgs.cs
- basecomparevalidator.cs
- GlyphElement.cs
- Overlapped.cs
- CacheVirtualItemsEvent.cs
- PackageRelationshipCollection.cs
- CommandPlan.cs
- PersonalizationStateInfo.cs
- DirtyTextRange.cs
- WebPartDeleteVerb.cs
- XmlSchemaComplexContent.cs
- ContainerUIElement3D.cs
- JavaScriptString.cs
- ToolZone.cs
- ProcessThread.cs
- ClipboardProcessor.cs
- SmtpDigestAuthenticationModule.cs
- PrintDocument.cs
- Highlights.cs
- SendingRequestEventArgs.cs
- InternalBufferOverflowException.cs
- SqlReferenceCollection.cs
- LinkTarget.cs
- WebDescriptionAttribute.cs
- DateTimeValueSerializer.cs
- WebServiceErrorEvent.cs
- UrlAuthorizationModule.cs
- PerspectiveCamera.cs
- XpsDocumentEvent.cs
- CodeChecksumPragma.cs
- SerTrace.cs
- FrameworkTextComposition.cs
- TextServicesHost.cs
- MenuItem.cs
- GeneratedContractType.cs
- WpfWebRequestHelper.cs
- StylusPointPropertyInfoDefaults.cs
- BodyGlyph.cs
- WebContext.cs
- MissingSatelliteAssemblyException.cs
- Int16Animation.cs
- TextOptions.cs