Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / Xml / System / Xml / Serialization / XmlSerializerFactory.cs / 1 / XmlSerializerFactory.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- namespace System.Xml.Serialization { using System.Reflection; using System.Collections; using System.IO; using System.Xml.Schema; using System; using System.Text; using System.Threading; using System.Globalization; using System.Security.Permissions; using System.Security.Policy; using System.Xml.Serialization.Configuration; using System.Diagnostics; using System.CodeDom.Compiler; ////// /// public class XmlSerializerFactory { static TempAssemblyCache cache = new TempAssemblyCache(); ///[To be supplied.] ////// /// public XmlSerializer CreateSerializer(Type type, XmlAttributeOverrides overrides, Type[] extraTypes, XmlRootAttribute root, string defaultNamespace) { return CreateSerializer(type, overrides, extraTypes, root, defaultNamespace, null, null); } ///[To be supplied.] ////// /// public XmlSerializer CreateSerializer(Type type, XmlRootAttribute root) { return CreateSerializer(type, null, new Type[0], root, null, null, null); } ///[To be supplied.] ////// /// public XmlSerializer CreateSerializer(Type type, Type[] extraTypes) { return CreateSerializer(type, null, extraTypes, null, null, null, null); } ///[To be supplied.] ////// /// public XmlSerializer CreateSerializer(Type type, XmlAttributeOverrides overrides) { return CreateSerializer(type, overrides, new Type[0], null, null, null, null); } ///[To be supplied.] ////// /// public XmlSerializer CreateSerializer(XmlTypeMapping xmlTypeMapping) { TempAssembly tempAssembly = XmlSerializer.GenerateTempAssembly(xmlTypeMapping); return (XmlSerializer)tempAssembly.Contract.TypedSerializers[xmlTypeMapping.Key]; } ///[To be supplied.] ////// /// public XmlSerializer CreateSerializer(Type type) { return CreateSerializer(type, (string)null); } ///[To be supplied.] ////// /// public XmlSerializer CreateSerializer(Type type, string defaultNamespace) { if (type == null) throw new ArgumentNullException("type"); TempAssembly tempAssembly = cache[defaultNamespace, type]; XmlTypeMapping mapping = null; if (tempAssembly == null) { lock (cache) { tempAssembly = cache[defaultNamespace, type]; if (tempAssembly == null) { XmlSerializerImplementation contract; Assembly assembly = TempAssembly.LoadGeneratedAssembly(type, defaultNamespace, out contract); if (assembly == null) { // need to reflect and generate new serialization assembly XmlReflectionImporter importer = new XmlReflectionImporter(defaultNamespace); mapping = importer.ImportTypeMapping(type, null, defaultNamespace); tempAssembly = XmlSerializer.GenerateTempAssembly(mapping, type, defaultNamespace); } else { tempAssembly = new TempAssembly(contract); } cache.Add(defaultNamespace, type, tempAssembly); } } } if (mapping == null) { mapping = XmlReflectionImporter.GetTopLevelMapping(type, defaultNamespace); } return (XmlSerializer)tempAssembly.Contract.GetSerializer(type); } ///[To be supplied.] ////// /// public XmlSerializer CreateSerializer(Type type, XmlAttributeOverrides overrides, Type[] extraTypes, XmlRootAttribute root, string defaultNamespace, string location, Evidence evidence) { if (type == null) throw new ArgumentNullException("type"); XmlReflectionImporter importer = new XmlReflectionImporter(overrides, defaultNamespace); for (int i = 0; i < extraTypes.Length; i++) importer.IncludeType(extraTypes[i]); XmlTypeMapping mapping = importer.ImportTypeMapping(type, root, defaultNamespace); TempAssembly tempAssembly = XmlSerializer.GenerateTempAssembly(mapping, type, defaultNamespace, location, evidence); return (XmlSerializer)tempAssembly.Contract.TypedSerializers[mapping.Key]; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.[To be supplied.] ///
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- BulletedListEventArgs.cs
- UserControlCodeDomTreeGenerator.cs
- AnimationLayer.cs
- CmsInterop.cs
- NestedContainer.cs
- WorkflowExecutor.cs
- NamespaceCollection.cs
- ModelPropertyDescriptor.cs
- HashCodeCombiner.cs
- ToolStripProgressBar.cs
- HostingEnvironmentSection.cs
- ToggleProviderWrapper.cs
- HandlerMappingMemo.cs
- ExpressionBindingCollection.cs
- ViewGenerator.cs
- UpdatableGenericsFeature.cs
- ExcludePathInfo.cs
- ParseChildrenAsPropertiesAttribute.cs
- TemplateColumn.cs
- SecurityDescriptor.cs
- ScriptReferenceEventArgs.cs
- NetworkCredential.cs
- EntityPropertyMappingAttribute.cs
- OleDbStruct.cs
- FrameworkEventSource.cs
- HttpListenerPrefixCollection.cs
- PropertyGridEditorPart.cs
- TreeNodeClickEventArgs.cs
- NavigationService.cs
- CategoryNameCollection.cs
- DesignerDataColumn.cs
- UniformGrid.cs
- PermissionSetTriple.cs
- TableFieldsEditor.cs
- Char.cs
- SchemaType.cs
- DataStreams.cs
- ObjectSecurity.cs
- PenThreadWorker.cs
- ArgumentException.cs
- Activator.cs
- Walker.cs
- XmlObjectSerializerReadContext.cs
- GuidelineCollection.cs
- MsmqProcessProtocolHandler.cs
- XmlSchemaAll.cs
- RemoteWebConfigurationHost.cs
- DictionaryGlobals.cs
- MetadataCacheItem.cs
- RangeValidator.cs
- ServiceHttpHandlerFactory.cs
- FilteredReadOnlyMetadataCollection.cs
- SessionStateItemCollection.cs
- ApplyImportsAction.cs
- ErrorTableItemStyle.cs
- LineInfo.cs
- Utility.cs
- UdpContractFilterBehavior.cs
- TextTreeObjectNode.cs
- RayMeshGeometry3DHitTestResult.cs
- TempEnvironment.cs
- SymDocumentType.cs
- TextLine.cs
- NavigationService.cs
- UIElementHelper.cs
- DataGridDetailsPresenterAutomationPeer.cs
- CollectionChangeEventArgs.cs
- XamlWrappingReader.cs
- IconConverter.cs
- RetrieveVirtualItemEventArgs.cs
- AdornedElementPlaceholder.cs
- StreamGeometry.cs
- SqlBooleanMismatchVisitor.cs
- EncryptedPackage.cs
- DataViewSetting.cs
- StringReader.cs
- DesignTimeHTMLTextWriter.cs
- Compiler.cs
- PageContentCollection.cs
- WizardPanel.cs
- SchemaNames.cs
- MessagePropertyVariants.cs
- XPathScanner.cs
- WaitHandle.cs
- PerformanceCounterPermissionEntry.cs
- DbParameterHelper.cs
- Util.cs
- HostDesigntimeLicenseContext.cs
- AnimationTimeline.cs
- TimelineCollection.cs
- FreezableDefaultValueFactory.cs
- PlaceHolder.cs
- SynchronizedMessageSource.cs
- XmlSchemaFacet.cs
- InstanceKey.cs
- WorkflowApplicationCompletedEventArgs.cs
- MetadataArtifactLoaderCompositeResource.cs
- SimpleApplicationHost.cs
- MemberHolder.cs
- StickyNoteContentControl.cs