Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / ndp / fx / src / Xml / System / Xml / Serialization / Configuration / SchemaImporterExtensionElement.cs / 2 / SchemaImporterExtensionElement.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- namespace System.Xml.Serialization.Configuration { using System; using System.Configuration; using System.ComponentModel; using System.Globalization; using System.Reflection; using System.Security.Permissions; public sealed class SchemaImporterExtensionElement : ConfigurationElement { public SchemaImporterExtensionElement() { this.properties.Add(this.name); this.properties.Add(this.type); } public SchemaImporterExtensionElement(string name, string type) : this() { this.Name = name; this[this.type] = new TypeAndName(type); } public SchemaImporterExtensionElement(string name, Type type) : this() { this.Name = name; this.Type = type; } [ConfigurationProperty(ConfigurationStrings.Name, IsRequired=true, IsKey = true)] public string Name { get { return (string)this[this.name]; } set { this[this.name] = value; } } protected override ConfigurationPropertyCollection Properties { get { return this.properties; } } [ConfigurationProperty(ConfigurationStrings.Type, IsRequired=true, IsKey = false)] [TypeConverter(typeof(TypeTypeConverter))] public Type Type { get { return ((TypeAndName) this[this.type]).type; } set { this[this.type] = new TypeAndName(value); } } internal string Key { get { return this.Name; } } ConfigurationPropertyCollection properties = new ConfigurationPropertyCollection(); readonly ConfigurationProperty name = new ConfigurationProperty(ConfigurationStrings.Name, typeof(string), null, ConfigurationPropertyOptions.IsKey); readonly ConfigurationProperty type = new ConfigurationProperty(ConfigurationStrings.Type, typeof(Type), null, new TypeTypeConverter(), null, ConfigurationPropertyOptions.IsRequired); class TypeAndName { public TypeAndName(string name) { this.type = Type.GetType(name, true, true); this.name = name; } public TypeAndName(Type type) { this.type = type; } public override int GetHashCode() { return type.GetHashCode(); } public override bool Equals(object comparand) { return type.Equals(((TypeAndName) comparand).type); } public readonly Type type; public readonly string name; } class TypeTypeConverter : TypeConverter { public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) { if (sourceType == typeof(string)) { return true; } return base.CanConvertFrom(context, sourceType); } public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { if (value is string) { return new TypeAndName((string) value); } return base.ConvertFrom(context, culture, value); } public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) { if (destinationType == typeof(string)) { TypeAndName castedValue = (TypeAndName) value; return castedValue.name == null ? castedValue.type.AssemblyQualifiedName : castedValue.name; } return base.ConvertTo(context, culture, value, destinationType); } } } } // 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
- HttpClientCertificate.cs
- ListControl.cs
- Figure.cs
- IPEndPointCollection.cs
- RuntimeHandles.cs
- ItemsPanelTemplate.cs
- KeyValueInternalCollection.cs
- WebPartsPersonalization.cs
- PropertyIdentifier.cs
- QuotedStringWriteStateInfo.cs
- ServiceNotStartedException.cs
- Calendar.cs
- ReliableSessionBindingElement.cs
- IteratorFilter.cs
- RightsManagementManager.cs
- MultilineStringConverter.cs
- WebZone.cs
- ListViewItem.cs
- Composition.cs
- Int32RectConverter.cs
- StylusOverProperty.cs
- FontStretch.cs
- TrustManagerPromptUI.cs
- SafeNativeMethodsOther.cs
- ToolBarButtonClickEvent.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- ContentDisposition.cs
- MarkerProperties.cs
- VerificationAttribute.cs
- PolicyStatement.cs
- DelayedRegex.cs
- Utility.cs
- HttpHandlerAction.cs
- BitmapImage.cs
- LightweightEntityWrapper.cs
- Listen.cs
- IdentityManager.cs
- ActivityTypeResolver.xaml.cs
- XsdCachingReader.cs
- WpfPayload.cs
- TextEditorCopyPaste.cs
- MembershipSection.cs
- Misc.cs
- _CookieModule.cs
- CodeMemberEvent.cs
- CatchBlock.cs
- CaretElement.cs
- IdnElement.cs
- AbsoluteQuery.cs
- XmlSchemaSequence.cs
- DynamicILGenerator.cs
- DictionaryEntry.cs
- Int64AnimationBase.cs
- ContainerAction.cs
- Image.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- StructuralComparisons.cs
- UrlParameterWriter.cs
- ConfigUtil.cs
- ReferenceConverter.cs
- TypeUnloadedException.cs
- _SafeNetHandles.cs
- HierarchicalDataBoundControl.cs
- ErrorTableItemStyle.cs
- MenuAutoFormat.cs
- RichTextBox.cs
- DesignTimeParseData.cs
- XhtmlBasicCommandAdapter.cs
- XmlSchemas.cs
- PersonalizableTypeEntry.cs
- ToggleButtonAutomationPeer.cs
- Publisher.cs
- WindowsSolidBrush.cs
- SiteMapPath.cs
- WebContext.cs
- InputLangChangeEvent.cs
- XmlSiteMapProvider.cs
- HostedHttpTransportManager.cs
- QilValidationVisitor.cs
- ElementUtil.cs
- FormViewDeleteEventArgs.cs
- ContentTypeSettingDispatchMessageFormatter.cs
- EntityContainerEntitySet.cs
- DecodeHelper.cs
- FilterElement.cs
- SchemaComplexType.cs
- ApplicationInterop.cs
- CqlBlock.cs
- DataControlImageButton.cs
- Message.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- ContentFileHelper.cs
- RegisteredHiddenField.cs
- validationstate.cs
- XmlSchemaCompilationSettings.cs
- XPathNodeInfoAtom.cs
- HtmlTableRowCollection.cs
- ChtmlPageAdapter.cs
- EmptyEnumerator.cs
- ToolStripDropDownMenu.cs