| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- //-----------------------------------------------------------------------------
- // Copyright (c) Microsoft Corporation. All rights reserved.
- //-----------------------------------------------------------------------------
- namespace System.Runtime.Serialization
- {
- using System;
- using System.CodeDom;
- using System.Reflection;
- using System.Collections.ObjectModel;
- public interface IDataContractSurrogate
- {
- Type GetDataContractType(Type type);
- object GetObjectToSerialize(object obj, Type targetType);
- object GetDeserializedObject(object obj, Type targetType);
- object GetCustomDataToExport(MemberInfo memberInfo, Type dataContractType);
- object GetCustomDataToExport(Type clrType, Type dataContractType);
- void GetKnownCustomDataTypes(Collection<Type> customDataTypes);
- Type GetReferencedTypeOnImport(string typeName, string typeNamespace, object customData);
- #if !NO_CODEDOM
- CodeTypeDeclaration ProcessImportedType(CodeTypeDeclaration typeDeclaration, CodeCompileUnit compileUnit);
- #endif
- }
- static class DataContractSurrogateCaller
- {
- internal static Type GetDataContractType(IDataContractSurrogate surrogate, Type type)
- {
- if (DataContract.GetBuiltInDataContract(type) != null)
- return type;
- Type dcType = surrogate.GetDataContractType(type);
- if (dcType == null)
- return type;
- return dcType;
- }
- internal static object GetObjectToSerialize(IDataContractSurrogate surrogate, object obj, Type objType, Type membertype)
- {
- if (obj == null)
- return null;
- if (DataContract.GetBuiltInDataContract(objType) != null)
- return obj;
- return surrogate.GetObjectToSerialize(obj, membertype);
- }
- internal static object GetDeserializedObject(IDataContractSurrogate surrogate, object obj, Type objType, Type memberType)
- {
- if (obj == null)
- return null;
- if (DataContract.GetBuiltInDataContract(objType) != null)
- return obj;
- return surrogate.GetDeserializedObject(obj, memberType);
- }
- internal static object GetCustomDataToExport(IDataContractSurrogate surrogate, MemberInfo memberInfo, Type dataContractType)
- {
- return surrogate.GetCustomDataToExport(memberInfo, dataContractType);
- }
- internal static object GetCustomDataToExport(IDataContractSurrogate surrogate, Type clrType, Type dataContractType)
- {
- if (DataContract.GetBuiltInDataContract(clrType) != null)
- return null;
- return surrogate.GetCustomDataToExport(clrType, dataContractType);
- }
- internal static void GetKnownCustomDataTypes(IDataContractSurrogate surrogate, Collection<Type> customDataTypes)
- {
- surrogate.GetKnownCustomDataTypes(customDataTypes);
- }
- internal static Type GetReferencedTypeOnImport(IDataContractSurrogate surrogate, string typeName, string typeNamespace, object customData)
- {
- if (DataContract.GetBuiltInDataContract(typeName, typeNamespace) != null)
- return null;
- return surrogate.GetReferencedTypeOnImport(typeName, typeNamespace, customData);
- }
- #if !NO_CODEDOM
- internal static CodeTypeDeclaration ProcessImportedType(IDataContractSurrogate surrogate, CodeTypeDeclaration typeDeclaration, CodeCompileUnit compileUnit)
- {
- return surrogate.ProcessImportedType(typeDeclaration, compileUnit);
- }
- #endif
- }
- }
|