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
- CodeTypeConstructor.cs
- ResourceType.cs
- ScriptResourceAttribute.cs
- XmlBinaryReader.cs
- DetailsViewPagerRow.cs
- WorkflowValidationFailedException.cs
- ItemCollection.cs
- webclient.cs
- ProcessThread.cs
- StorageMappingItemLoader.cs
- InvokePattern.cs
- SaveFileDialogDesigner.cs
- NullableDecimalSumAggregationOperator.cs
- KeyNotFoundException.cs
- DataControlImageButton.cs
- WebPartConnectionsEventArgs.cs
- SQLSingle.cs
- PrintEvent.cs
- Trustee.cs
- PointLight.cs
- Content.cs
- Typography.cs
- StrokeFIndices.cs
- UnsafeNetInfoNativeMethods.cs
- XPathMultyIterator.cs
- DBBindings.cs
- EventLogPermissionHolder.cs
- IntermediatePolicyValidator.cs
- SignatureToken.cs
- WindowsListViewGroupSubsetLink.cs
- AnimationStorage.cs
- XmlAttributeAttribute.cs
- smtpconnection.cs
- XmlSchemaComplexContentExtension.cs
- SafeCoTaskMem.cs
- StringExpressionSet.cs
- counter.cs
- CommandEventArgs.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- EventListener.cs
- Point4DValueSerializer.cs
- CodeGroup.cs
- ChangeBlockUndoRecord.cs
- MetadataSource.cs
- PointValueSerializer.cs
- DBDataPermissionAttribute.cs
- IntPtr.cs
- ViewKeyConstraint.cs
- ProcessHostFactoryHelper.cs
- Int32Collection.cs
- ClientScriptManager.cs
- WebProxyScriptElement.cs
- AlphabetConverter.cs
- ParameterRetriever.cs
- Boolean.cs
- DecoderNLS.cs
- LogicalExpressionTypeConverter.cs
- LineBreakRecord.cs
- PresentationAppDomainManager.cs
- LocalizedNameDescriptionPair.cs
- MaskDesignerDialog.cs
- ValueTable.cs
- LayoutInformation.cs
- RequestQueue.cs
- TraceContextRecord.cs
- FileUtil.cs
- ThicknessConverter.cs
- WebBrowserNavigatingEventHandler.cs
- UriTemplateEquivalenceComparer.cs
- HtmlElementEventArgs.cs
- CodePageUtils.cs
- cookie.cs
- BitmapEffectGeneralTransform.cs
- xmlfixedPageInfo.cs
- InternalEnumValidatorAttribute.cs
- DateTimeFormat.cs
- PreDigestedSignedInfo.cs
- CngAlgorithm.cs
- BitVector32.cs
- UpdatableGenericsFeature.cs
- AppSettingsExpressionBuilder.cs
- PromptStyle.cs
- BlockCollection.cs
- MetadataWorkspace.cs
- NamespaceEmitter.cs
- GroupBoxDesigner.cs
- ChtmlLinkAdapter.cs
- AsyncMethodInvoker.cs
- LiteralText.cs
- ProcessHost.cs
- UIElementAutomationPeer.cs
- HttpCookieCollection.cs
- TraceListener.cs
- WebEvents.cs
- DesignerToolboxInfo.cs
- TransformValueSerializer.cs
- CodeVariableReferenceExpression.cs
- ObjectHelper.cs
- SchemaTypeEmitter.cs
- DataRowComparer.cs