Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / Serialization / System / Runtime / Serialization / IDataContractSurrogate.cs / 1305376 / IDataContractSurrogate.cs
//------------------------------------------------------------------------------ // 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(CollectioncustomDataTypes); Type GetReferencedTypeOnImport(string typeName, string typeNamespace, object customData); CodeTypeDeclaration ProcessImportedType(CodeTypeDeclaration typeDeclaration, CodeCompileUnit compileUnit); } 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 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); } internal static CodeTypeDeclaration ProcessImportedType(IDataContractSurrogate surrogate, CodeTypeDeclaration typeDeclaration, CodeCompileUnit compileUnit) { return surrogate.ProcessImportedType(typeDeclaration, compileUnit); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ // 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 customDataTypes); Type GetReferencedTypeOnImport(string typeName, string typeNamespace, object customData); CodeTypeDeclaration ProcessImportedType(CodeTypeDeclaration typeDeclaration, CodeCompileUnit compileUnit); } 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 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); } internal static CodeTypeDeclaration ProcessImportedType(IDataContractSurrogate surrogate, CodeTypeDeclaration typeDeclaration, CodeCompileUnit compileUnit) { return surrogate.ProcessImportedType(typeDeclaration, compileUnit); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ResolvedKeyFrameEntry.cs
- AppLevelCompilationSectionCache.cs
- TransportContext.cs
- EmptyImpersonationContext.cs
- SQLDateTime.cs
- CellTreeNode.cs
- ModelPerspective.cs
- CodeSubDirectoriesCollection.cs
- _SslStream.cs
- WebPageTraceListener.cs
- SerializationObjectManager.cs
- StorageEndPropertyMapping.cs
- AttachedPropertyBrowsableAttribute.cs
- XmlMemberMapping.cs
- AnnotationHelper.cs
- DNS.cs
- GridViewItemAutomationPeer.cs
- ListViewPagedDataSource.cs
- ValidationResult.cs
- PageSetupDialog.cs
- AxisAngleRotation3D.cs
- RemoteDebugger.cs
- ManualResetEvent.cs
- ReferenceConverter.cs
- ResourcesChangeInfo.cs
- AmbientLight.cs
- PartitionResolver.cs
- GraphicsPath.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- ContextStaticAttribute.cs
- PieceDirectory.cs
- Int64.cs
- SendingRequestEventArgs.cs
- WebCategoryAttribute.cs
- SrgsElementList.cs
- Model3DGroup.cs
- QilDataSource.cs
- TypeSystemProvider.cs
- ContentPosition.cs
- TrustManager.cs
- TextTreeInsertElementUndoUnit.cs
- TreeViewDesigner.cs
- HelpExampleGenerator.cs
- MetafileHeader.cs
- LockedActivityGlyph.cs
- ResetableIterator.cs
- SmtpAuthenticationManager.cs
- InstancePersistenceCommandException.cs
- ItemsChangedEventArgs.cs
- _UriSyntax.cs
- ItemCheckEvent.cs
- SQLGuid.cs
- ListViewContainer.cs
- FlowSwitch.cs
- OrderedDictionary.cs
- Contracts.cs
- Thread.cs
- ControlUtil.cs
- HatchBrush.cs
- CancellationHandlerDesigner.cs
- ResourceDescriptionAttribute.cs
- DocumentGrid.cs
- SelectorItemAutomationPeer.cs
- Events.cs
- MarkupCompilePass1.cs
- WindowsSolidBrush.cs
- FontDialog.cs
- SecurityUniqueId.cs
- HttpHandlerActionCollection.cs
- ZipIOModeEnforcingStream.cs
- FrameworkObject.cs
- DateRangeEvent.cs
- ActivityBuilderHelper.cs
- CategoryNameCollection.cs
- FlagsAttribute.cs
- RemotingConfiguration.cs
- CorePropertiesFilter.cs
- SqlCacheDependencyDatabase.cs
- Vector3DAnimationUsingKeyFrames.cs
- GridViewPageEventArgs.cs
- PropertyChangedEventArgs.cs
- assertwrapper.cs
- ValidationError.cs
- ResourceDisplayNameAttribute.cs
- FontUnitConverter.cs
- RestrictedTransactionalPackage.cs
- TraceUtility.cs
- EventDescriptorCollection.cs
- WasHostedComPlusFactory.cs
- IDispatchConstantAttribute.cs
- ContentDisposition.cs
- _ConnectionGroup.cs
- MimeTextImporter.cs
- ConfigXmlComment.cs
- IUnknownConstantAttribute.cs
- XamlReaderHelper.cs
- PersonalizationAdministration.cs
- Bezier.cs
- OdbcConnectionFactory.cs
- SignatureDescription.cs