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;
///
///
/// [To be supplied.]
///
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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- PointUtil.cs
- UnsafeNativeMethods.cs
- SafePointer.cs
- SoapSchemaExporter.cs
- FormViewModeEventArgs.cs
- GridViewEditEventArgs.cs
- PrintControllerWithStatusDialog.cs
- SharedPersonalizationStateInfo.cs
- HttpCookiesSection.cs
- XmlSchemaChoice.cs
- HostedTransportConfigurationManager.cs
- IIS7WorkerRequest.cs
- TextTreeText.cs
- XmlCollation.cs
- SizeF.cs
- Message.cs
- BaseResourcesBuildProvider.cs
- FSWPathEditor.cs
- _Rfc2616CacheValidators.cs
- MenuAdapter.cs
- AutoCompleteStringCollection.cs
- FileLoadException.cs
- CodeExporter.cs
- Expression.cs
- safemediahandle.cs
- DbConnectionStringBuilder.cs
- AQNBuilder.cs
- _UriTypeConverter.cs
- Marshal.cs
- BridgeDataReader.cs
- RsaEndpointIdentity.cs
- SspiWrapper.cs
- XmlElementAttribute.cs
- BitConverter.cs
- OrthographicCamera.cs
- ResourceProviderFactory.cs
- ItemsChangedEventArgs.cs
- InstanceKeyCompleteException.cs
- FunctionGenerator.cs
- TypeConverterMarkupExtension.cs
- HybridCollection.cs
- DateTimeOffset.cs
- ProfileModule.cs
- CommandPlan.cs
- DetailsViewCommandEventArgs.cs
- SmtpSection.cs
- Keywords.cs
- CodeNamespaceImport.cs
- ToolBarPanel.cs
- ScriptBehaviorDescriptor.cs
- TableItemProviderWrapper.cs
- DataGridViewUtilities.cs
- DataContractSerializerOperationBehavior.cs
- DetailsViewUpdatedEventArgs.cs
- PersonalizationProviderHelper.cs
- AssemblyBuilder.cs
- ParsedAttributeCollection.cs
- DataControlFieldTypeEditor.cs
- FrameworkTemplate.cs
- ActivationArguments.cs
- ToolBarButton.cs
- ProtocolViolationException.cs
- AttachedAnnotationChangedEventArgs.cs
- TaskDesigner.cs
- RuleSettings.cs
- SendAgentStatusRequest.cs
- ProjectionCamera.cs
- util.cs
- DataViewListener.cs
- Container.cs
- SyndicationSerializer.cs
- VSWCFServiceContractGenerator.cs
- DoubleLink.cs
- HttpWrapper.cs
- SHA512.cs
- XmlHelper.cs
- XmlFormatReaderGenerator.cs
- Screen.cs
- MenuAutomationPeer.cs
- TokenBasedSetEnumerator.cs
- NotSupportedException.cs
- NameValueFileSectionHandler.cs
- TextServicesCompartment.cs
- GroupBoxAutomationPeer.cs
- CompilerLocalReference.cs
- BindingManagerDataErrorEventArgs.cs
- TreeIterators.cs
- DefaultHttpHandler.cs
- TaiwanCalendar.cs
- Stroke2.cs
- ColorContextHelper.cs
- XmlLinkedNode.cs
- InvalidMessageContractException.cs
- ColorConverter.cs
- ResourceContainer.cs
- FileLevelControlBuilderAttribute.cs
- CodeRemoveEventStatement.cs
- CompiledIdentityConstraint.cs
- Activator.cs
- RoleManagerSection.cs