Code:
/ DotNET / DotNET / 8.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
- ManifestResourceInfo.cs
- WebPermission.cs
- TextServicesProperty.cs
- FormCollection.cs
- XmlAttributeOverrides.cs
- BitmapEffectCollection.cs
- DeferredSelectedIndexReference.cs
- ObjectConverter.cs
- StringReader.cs
- ComponentCollection.cs
- SQLInt16.cs
- MutexSecurity.cs
- ByteStreamGeometryContext.cs
- CommandBindingCollection.cs
- OdbcUtils.cs
- ComponentDispatcherThread.cs
- XamlWriter.cs
- SchemaTypeEmitter.cs
- DefaultEventAttribute.cs
- BitmapEffectDrawingContextState.cs
- DbDataReader.cs
- NonSerializedAttribute.cs
- HwndKeyboardInputProvider.cs
- SoapElementAttribute.cs
- ToolStripContainer.cs
- DEREncoding.cs
- ComplusEndpointConfigContainer.cs
- BindingWorker.cs
- SubtreeProcessor.cs
- VoiceObjectToken.cs
- MsmqElementBase.cs
- ValidationError.cs
- GreenMethods.cs
- PasswordTextNavigator.cs
- SmiMetaData.cs
- QilList.cs
- VirtualDirectoryMapping.cs
- CodeAccessPermission.cs
- SessionSwitchEventArgs.cs
- XmlComplianceUtil.cs
- Wildcard.cs
- DataKeyCollection.cs
- LayoutInformation.cs
- NotCondition.cs
- SQLDecimalStorage.cs
- XmlCustomFormatter.cs
- DrawingContextDrawingContextWalker.cs
- ComNativeDescriptor.cs
- PropertyInfoSet.cs
- ValidationService.cs
- _Rfc2616CacheValidators.cs
- OracleSqlParser.cs
- NamedObject.cs
- OracleSqlParser.cs
- PropertyEmitterBase.cs
- SQLBytes.cs
- Utils.cs
- DotAtomReader.cs
- COM2IVsPerPropertyBrowsingHandler.cs
- SerializationEventsCache.cs
- ExpressionBuilderCollection.cs
- DataTemplateKey.cs
- EntityDataSourceValidationException.cs
- AssemblyBuilder.cs
- CacheRequest.cs
- IERequestCache.cs
- ListDictionaryInternal.cs
- ZipIOCentralDirectoryFileHeader.cs
- ParenthesizePropertyNameAttribute.cs
- QueryCacheKey.cs
- Type.cs
- ApplicationManager.cs
- WSSecureConversation.cs
- DeploymentExceptionMapper.cs
- EntityDesignerBuildProvider.cs
- SqlDependencyUtils.cs
- CharEnumerator.cs
- PrintPreviewDialog.cs
- Visual3D.cs
- GridViewPageEventArgs.cs
- ChildrenQuery.cs
- SocketCache.cs
- dbenumerator.cs
- WebServiceClientProxyGenerator.cs
- PersistenceException.cs
- DataGridViewTopRowAccessibleObject.cs
- XmlEventCache.cs
- GridViewRowCollection.cs
- LineGeometry.cs
- DynamicResourceExtension.cs
- StaticExtension.cs
- CryptoApi.cs
- ToolStrip.cs
- SecureStringHasher.cs
- TableRow.cs
- Pair.cs
- _ConnectionGroup.cs
- Splitter.cs
- ColumnResizeAdorner.cs
- ListBoxItemAutomationPeer.cs