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
- ListViewDataItem.cs
- Effect.cs
- DerivedKeyCachingSecurityTokenSerializer.cs
- StorageMappingItemLoader.cs
- SqlDependencyUtils.cs
- CombinedHttpChannel.cs
- ToolboxItem.cs
- DerivedKeySecurityToken.cs
- WebPartZoneDesigner.cs
- TypeUsageBuilder.cs
- SoapObjectWriter.cs
- translator.cs
- TextRenderer.cs
- WebServiceTypeData.cs
- TextEndOfSegment.cs
- DataGridViewDataConnection.cs
- MethodExpr.cs
- TableRowGroupCollection.cs
- StringResourceManager.cs
- ISFTagAndGuidCache.cs
- Setter.cs
- ResourceProviderFactory.cs
- BufferedStream2.cs
- IndentedWriter.cs
- UseManagedPresentationBindingElementImporter.cs
- DatePickerAutomationPeer.cs
- WorkflowInstance.cs
- PeerNameRegistration.cs
- RowToParametersTransformer.cs
- UidPropertyAttribute.cs
- FontStretchConverter.cs
- WebEvents.cs
- ServiceXNameTypeConverter.cs
- DispatchChannelSink.cs
- XhtmlBasicLinkAdapter.cs
- Attributes.cs
- TickBar.cs
- ViewService.cs
- TagNameToTypeMapper.cs
- StickyNoteHelper.cs
- ResourcePool.cs
- DependencyPropertyHelper.cs
- SoapBinding.cs
- Freezable.cs
- ShaderEffect.cs
- RichTextBox.cs
- MailMessage.cs
- AssemblyFilter.cs
- BoundsDrawingContextWalker.cs
- UInt32.cs
- AccessViolationException.cs
- XmlRawWriter.cs
- EditCommandColumn.cs
- Object.cs
- SessionStateUtil.cs
- StaticTextPointer.cs
- ConfigXmlAttribute.cs
- StylusPointProperty.cs
- StaticTextPointer.cs
- TypeConverterAttribute.cs
- RsaKeyIdentifierClause.cs
- GroupQuery.cs
- WSDualHttpSecurity.cs
- SelectQueryOperator.cs
- WindowsFormsSectionHandler.cs
- TraceShell.cs
- connectionpool.cs
- SqlDataSourceConfigureSelectPanel.cs
- ForeignKeyFactory.cs
- FileVersionInfo.cs
- BrushValueSerializer.cs
- AssertFilter.cs
- PropertyCondition.cs
- ContextStack.cs
- CustomWebEventKey.cs
- ViewKeyConstraint.cs
- CustomAttribute.cs
- PtsContext.cs
- ExtenderControl.cs
- Int32Storage.cs
- DragEvent.cs
- ConnectionPointCookie.cs
- CustomActivityDesigner.cs
- Peer.cs
- CodeAssignStatement.cs
- PanelStyle.cs
- FilteredDataSetHelper.cs
- FormViewRow.cs
- JavaScriptObjectDeserializer.cs
- XmlSerializer.cs
- PackageRelationshipSelector.cs
- StandardRuntimeEnumValidatorAttribute.cs
- Line.cs
- TimeSpanOrInfiniteValidator.cs
- OneOf.cs
- TokenBasedSetEnumerator.cs
- UpdatePanelTriggerCollection.cs
- ArgumentDesigner.xaml.cs
- WriteableBitmap.cs
- OpenTypeCommon.cs