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
- PropertyGrid.cs
- recordstatescratchpad.cs
- DbConnectionFactory.cs
- WindowCollection.cs
- AdapterDictionary.cs
- CmsUtils.cs
- URLBuilder.cs
- MobileDeviceCapabilitiesSectionHandler.cs
- DllHostInitializer.cs
- InfoCardHelper.cs
- DesignerDataRelationship.cs
- EventPropertyMap.cs
- WebPartMenuStyle.cs
- OutputScopeManager.cs
- ScriptingProfileServiceSection.cs
- counter.cs
- OptimalBreakSession.cs
- HtmlTextBoxAdapter.cs
- ObjectDataSourceView.cs
- ObjectSet.cs
- EngineSiteSapi.cs
- DocumentApplicationJournalEntry.cs
- MetabaseServerConfig.cs
- X509ChainElement.cs
- PostBackTrigger.cs
- FormViewCommandEventArgs.cs
- TranslateTransform3D.cs
- While.cs
- StickyNoteHelper.cs
- GeneralTransform3DTo2DTo3D.cs
- CounterSample.cs
- SyndicationFeed.cs
- SqlDataSourceSelectingEventArgs.cs
- TextFindEngine.cs
- unitconverter.cs
- SourceSwitch.cs
- KeyEvent.cs
- PropertyChangingEventArgs.cs
- SoapClientProtocol.cs
- WaitHandleCannotBeOpenedException.cs
- LinearGradientBrush.cs
- TogglePattern.cs
- OdbcConnectionPoolProviderInfo.cs
- _LazyAsyncResult.cs
- EventEntry.cs
- Transform.cs
- Code.cs
- ProfileInfo.cs
- SecurityUtils.cs
- ContainerUtilities.cs
- HitTestDrawingContextWalker.cs
- GuidelineSet.cs
- SqlUdtInfo.cs
- JsonServiceDocumentSerializer.cs
- GenerateHelper.cs
- OutKeywords.cs
- MarshalDirectiveException.cs
- DesignerHierarchicalDataSourceView.cs
- WorkflowElementDialogWindow.xaml.cs
- PerformanceCounterPermissionAttribute.cs
- MimeTypeMapper.cs
- TextParaLineResult.cs
- XmlBinaryReader.cs
- TripleDESCryptoServiceProvider.cs
- XmlName.cs
- SqlCommand.cs
- LostFocusEventManager.cs
- OpCellTreeNode.cs
- UnicodeEncoding.cs
- BitConverter.cs
- ClientScriptManager.cs
- Rule.cs
- UrlMappingsSection.cs
- EntityDesignerUtils.cs
- Roles.cs
- RegexCode.cs
- StandardOleMarshalObject.cs
- WebServiceMethodData.cs
- AxisAngleRotation3D.cs
- FamilyTypeface.cs
- SqlProvider.cs
- DataKeyCollection.cs
- QfeChecker.cs
- MimePart.cs
- BindingRestrictions.cs
- FieldBuilder.cs
- XmlTextAttribute.cs
- Dictionary.cs
- FormattedText.cs
- ColumnReorderedEventArgs.cs
- SafePointer.cs
- ISFClipboardData.cs
- VariableDesigner.xaml.cs
- UriTemplateQueryValue.cs
- ScrollChangedEventArgs.cs
- HeaderPanel.cs
- NTAccount.cs
- GridPattern.cs
- ClientSponsor.cs
- ColumnBinding.cs