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
- SmtpReplyReader.cs
- Certificate.cs
- Int32.cs
- TreeNode.cs
- EntityTransaction.cs
- HttpStreamXmlDictionaryReader.cs
- StoreAnnotationsMap.cs
- GlyphingCache.cs
- CallTemplateAction.cs
- FontSizeConverter.cs
- TempEnvironment.cs
- EraserBehavior.cs
- DeferredElementTreeState.cs
- XmlSchemaAnyAttribute.cs
- AdornerDecorator.cs
- DesignerCategoryAttribute.cs
- StringCollection.cs
- WindowsFormsHost.cs
- SqlConnectionManager.cs
- OverflowException.cs
- DbException.cs
- DeviceContext2.cs
- EncryptedType.cs
- WebPartDisplayModeCollection.cs
- PopOutPanel.cs
- SourceFileBuildProvider.cs
- SafeHandles.cs
- ObjectViewEntityCollectionData.cs
- UTF7Encoding.cs
- DelegateSerializationHolder.cs
- BodyGlyph.cs
- ObjectParameterCollection.cs
- XmlEntityReference.cs
- StatusBarItem.cs
- ClientBuildManager.cs
- TaskHelper.cs
- DataGridViewDataConnection.cs
- DataObject.cs
- AddDataControlFieldDialog.cs
- BevelBitmapEffect.cs
- DebugView.cs
- DataObjectSettingDataEventArgs.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- TimeSpan.cs
- QuotedStringWriteStateInfo.cs
- AutomationPeer.cs
- ToolStripSeparatorRenderEventArgs.cs
- WeakReferenceEnumerator.cs
- NameValuePair.cs
- ApplicationDirectory.cs
- _FtpControlStream.cs
- ZipIOCentralDirectoryFileHeader.cs
- _DigestClient.cs
- ToolStripProgressBar.cs
- LinqDataSourceHelper.cs
- AppDomainUnloadedException.cs
- NetworkCredential.cs
- DomainUpDown.cs
- XmlAnyAttributeAttribute.cs
- RangeContentEnumerator.cs
- ErrorStyle.cs
- Parameter.cs
- MarkupCompilePass1.cs
- KerberosTicketHashIdentifierClause.cs
- MemberBinding.cs
- CallSiteOps.cs
- SqlDataSourceView.cs
- DbConnectionPoolGroupProviderInfo.cs
- GatewayDefinition.cs
- ObjectManager.cs
- SchemaCollectionCompiler.cs
- MetadataArtifactLoaderComposite.cs
- BasicCommandTreeVisitor.cs
- DelayedRegex.cs
- ClientSettings.cs
- BaseCollection.cs
- WebBrowserProgressChangedEventHandler.cs
- XmlCharCheckingWriter.cs
- PassportAuthenticationModule.cs
- ComponentCommands.cs
- ResourceReferenceKeyNotFoundException.cs
- ObjectSet.cs
- RegexCaptureCollection.cs
- PageSettings.cs
- MultiAsyncResult.cs
- ClientConfigurationSystem.cs
- _NegoStream.cs
- SqlDependency.cs
- ResourceType.cs
- GeneratedCodeAttribute.cs
- Calendar.cs
- CompilerWrapper.cs
- TimeSpanValidator.cs
- BaseParser.cs
- ContentElement.cs
- ObjectQueryExecutionPlan.cs
- ExcCanonicalXml.cs
- PermissionAttributes.cs
- QueryRewriter.cs
- PickBranchDesigner.xaml.cs