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
- Rule.cs
- SqlInternalConnectionTds.cs
- ReachUIElementCollectionSerializerAsync.cs
- ChangeNode.cs
- ProtocolsConfigurationHandler.cs
- WebResourceAttribute.cs
- XmlILModule.cs
- NamespaceDisplay.xaml.cs
- EditorZoneBase.cs
- DataGridViewCellConverter.cs
- ObfuscationAttribute.cs
- SchemaTableOptionalColumn.cs
- ConditionalAttribute.cs
- GenericTextProperties.cs
- ElementHostPropertyMap.cs
- XamlSerializerUtil.cs
- RadioButton.cs
- MiniConstructorInfo.cs
- EncoderReplacementFallback.cs
- SchemaCreator.cs
- SemanticBasicElement.cs
- ScriptReference.cs
- DocumentScope.cs
- Crypto.cs
- TimeEnumHelper.cs
- TokenBasedSet.cs
- VisualTreeUtils.cs
- ConfigurationManagerInternalFactory.cs
- SHA512CryptoServiceProvider.cs
- ObjectQueryExecutionPlan.cs
- DivideByZeroException.cs
- Types.cs
- ToolStripManager.cs
- StrongNameMembershipCondition.cs
- EntityDataSourceUtil.cs
- ITextView.cs
- WebPartMenuStyle.cs
- AnonymousIdentificationModule.cs
- OleServicesContext.cs
- TextBlockAutomationPeer.cs
- HostSecurityManager.cs
- WSDualHttpSecurityMode.cs
- ToolBar.cs
- SafeNativeMethods.cs
- VisualStateChangedEventArgs.cs
- GeneralTransform.cs
- BlurEffect.cs
- GlyphingCache.cs
- SystemSounds.cs
- BindingExpression.cs
- HttpModuleCollection.cs
- AspNetSynchronizationContext.cs
- DataGridColumn.cs
- RequestChannel.cs
- FileInfo.cs
- CommandEventArgs.cs
- TreeView.cs
- Base64Decoder.cs
- SwitchElementsCollection.cs
- UIPermission.cs
- WindowsRebar.cs
- NumericUpDownAcceleration.cs
- DelimitedListTraceListener.cs
- AgileSafeNativeMemoryHandle.cs
- DriveInfo.cs
- Maps.cs
- StructuralObject.cs
- _DynamicWinsockMethods.cs
- GroupBoxAutomationPeer.cs
- ComplexLine.cs
- Helpers.cs
- DefaultBindingPropertyAttribute.cs
- ApplicationCommands.cs
- FormsAuthenticationUserCollection.cs
- SectionUpdates.cs
- TargetControlTypeAttribute.cs
- ComponentCollection.cs
- XmlSchemaInclude.cs
- SchemaCollectionPreprocessor.cs
- KeyInstance.cs
- HostProtectionException.cs
- DataGridViewTextBoxEditingControl.cs
- StringUtil.cs
- SmtpReplyReaderFactory.cs
- HttpProfileGroupBase.cs
- CqlIdentifiers.cs
- SecurityElement.cs
- _RegBlobWebProxyDataBuilder.cs
- Window.cs
- QuaternionRotation3D.cs
- CodeIterationStatement.cs
- FontFamily.cs
- DiagnosticEventProvider.cs
- _UncName.cs
- TextEmbeddedObject.cs
- XPathScanner.cs
- InternalConfigSettingsFactory.cs
- TemplateBindingExpression.cs
- DodSequenceMerge.cs
- WizardStepBase.cs