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
- LowerCaseStringConverter.cs
- Speller.cs
- BaseCodePageEncoding.cs
- SqlInternalConnectionSmi.cs
- UserPreferenceChangingEventArgs.cs
- ArrayItemValue.cs
- PersonalizationProvider.cs
- EncoderParameter.cs
- PerfCounters.cs
- WinFormsComponentEditor.cs
- IPipelineRuntime.cs
- ColumnResult.cs
- Page.cs
- GraphicsPath.cs
- DataTableReader.cs
- ListManagerBindingsCollection.cs
- IncrementalReadDecoders.cs
- InputBinding.cs
- SslStreamSecurityBindingElement.cs
- MessageDescription.cs
- FixedPageAutomationPeer.cs
- XPathNavigatorException.cs
- HttpResponseInternalWrapper.cs
- Path.cs
- TransformPatternIdentifiers.cs
- codemethodreferenceexpression.cs
- FieldBuilder.cs
- ResourcePermissionBase.cs
- RadioButtonList.cs
- ExpandCollapsePattern.cs
- InputProcessorProfilesLoader.cs
- SessionEndingCancelEventArgs.cs
- SqlFactory.cs
- HostingEnvironment.cs
- Window.cs
- EntityDataSourceSelectedEventArgs.cs
- RequestValidator.cs
- EdmRelationshipRoleAttribute.cs
- ByteStack.cs
- ToolStripButton.cs
- ConversionContext.cs
- ThreadSafeList.cs
- CodeMethodReturnStatement.cs
- EntityDataSourceDesignerHelper.cs
- FtpRequestCacheValidator.cs
- HtmlFormAdapter.cs
- TrackBar.cs
- BlurEffect.cs
- UnsafeMethods.cs
- CanExecuteRoutedEventArgs.cs
- FormViewUpdateEventArgs.cs
- Effect.cs
- XmlAttributeProperties.cs
- SystemIPGlobalProperties.cs
- RequestQueryProcessor.cs
- iisPickupDirectory.cs
- dbdatarecord.cs
- TextServicesHost.cs
- MaskedTextBox.cs
- FileEnumerator.cs
- XmlDataImplementation.cs
- EncodingTable.cs
- WizardStepBase.cs
- XmlSchemaAll.cs
- NullableLongAverageAggregationOperator.cs
- VariableBinder.cs
- PaperSource.cs
- AdornedElementPlaceholder.cs
- OdbcErrorCollection.cs
- TextBoxAutomationPeer.cs
- EventLogPermissionEntryCollection.cs
- DocComment.cs
- ModelItemDictionary.cs
- InternalConfigRoot.cs
- ResourceWriter.cs
- ToolStripProgressBar.cs
- LinqToSqlWrapper.cs
- DesignerAutoFormatCollection.cs
- ResXDataNode.cs
- ParallelTimeline.cs
- CustomAttributeSerializer.cs
- SmiRequestExecutor.cs
- KeyedHashAlgorithm.cs
- EnterpriseServicesHelper.cs
- UrlMappingsSection.cs
- SqlCacheDependencyDatabase.cs
- DispatchChannelSink.cs
- SamlAdvice.cs
- ApplicationInterop.cs
- X509ChainElement.cs
- WithStatement.cs
- EventLogPermissionEntry.cs
- RowType.cs
- XmlWrappingReader.cs
- RijndaelCryptoServiceProvider.cs
- sitestring.cs
- WorkflowStateRollbackService.cs
- SymmetricAlgorithm.cs
- Debug.cs
- CodeVariableDeclarationStatement.cs