#region Copyright (c) Microsoft Corporation /// /// Copyright (c) Microsoft Corporation. All Rights Reserved. /// Information Contained Herein is Proprietary and Confidential. /// #endregion using System; using System.Collections.Generic; using XmlSerialization = System.Xml.Serialization; #if WEB_EXTENSIONS_CODE namespace System.Web.Compilation.WCFModel #else namespace Microsoft.VSDesigner.WCFModel #endif { #if WEB_EXTENSIONS_CODE internal class ClientOptions #else [CLSCompliant(true)] public class ClientOptions #endif { private bool m_GenerateAsynchronousMethods; private bool m_GenerateTaskBasedAsynchronousMethod; private bool m_GenerateTaskBasedAsynchronousMethodSpecified; private bool m_EnableDataBinding; private List m_ExcludedTypeList; private bool m_ImportXmlTypes; private bool m_GenerateInternalTypes; private bool m_GenerateMessageContracts; private List m_NamespaceMappingList; private List m_CollectionMappingList; private bool m_GenerateSerializableTypes; private ProxySerializerType m_Serializer; private bool m_ReferenceAllAssemblies; private List m_ReferencedAssemblyList; private List m_ReferencedDataContractTypeList; private List m_ServiceContractMappingList; private bool m_UseSerializerForFaults; private bool m_UseSerializerForFaultsSpecified; private bool m_Wrapped; private bool m_WrappedSpecified; /// /// Control whether asynchronous proxy will be generated /// /// /// [XmlSerialization.XmlElement()] public bool GenerateAsynchronousMethods { get { return m_GenerateAsynchronousMethods; } set { m_GenerateAsynchronousMethods = value; // GenerateAsynchronousMethods and GenerateTaskBasedAsynchronousMethod are mutually exclusive. if (GenerateAsynchronousMethods) { GenerateTaskBasedAsynchronousMethod = false; } } } /// /// Control whether task-based async operations will be generated /// /// /// [XmlSerialization.XmlElement()] public bool GenerateTaskBasedAsynchronousMethod { get { return m_GenerateTaskBasedAsynchronousMethod; } set { // In order to maximally keep compatible with Dev10 and previous VS, if GenerateTaskBasedAsynchronousMethod is false, // we will not persist it. m_GenerateTaskBasedAsynchronousMethod = value; m_GenerateTaskBasedAsynchronousMethodSpecified = value; // GenerateAsynchronousMethods and GenerateTaskBasedAsynchronousMethod are mutually exclusive. if (GenerateTaskBasedAsynchronousMethod) { GenerateAsynchronousMethods = false; } } } /// /// Is GenerateTaskBasedAsynchronousMethod specified? /// /// /// [XmlSerialization.XmlIgnore()] public bool GenerateTaskBasedAsynchronousMethodSpecified { get { return m_GenerateTaskBasedAsynchronousMethodSpecified; } } /// /// control whether to generate INotifyPropertyChanged interface on data contract types /// /// /// [XmlSerialization.XmlElement()] public bool EnableDataBinding { get { return m_EnableDataBinding; } set { m_EnableDataBinding = value; } } /// /// contains a list of types which will be excluded when the design time tool matches types automatically /// /// /// [XmlSerialization.XmlArray(ElementName = "ExcludedTypes")] [XmlSerialization.XmlArrayItem("ExcludedType", typeof(ReferencedType))] public List ExcludedTypeList { get { if (m_ExcludedTypeList == null) { m_ExcludedTypeList = new List(); } return m_ExcludedTypeList; } } /// /// control whether the data contract serializer should import non-DataContract types as IXmlSerializable types /// /// /// [XmlSerialization.XmlElement()] public bool ImportXmlTypes { get { return m_ImportXmlTypes; } set { m_ImportXmlTypes = value; } } /// /// control whether to generate internal types /// /// /// [XmlSerialization.XmlElement()] public bool GenerateInternalTypes { get { return m_GenerateInternalTypes; } set { m_GenerateInternalTypes = value; } } /// /// control whether to generate message contract types /// /// /// [XmlSerialization.XmlElement()] public bool GenerateMessageContracts { get { return m_GenerateMessageContracts; } set { m_GenerateMessageContracts = value; } } /// /// namespace mapping between metadata namespace and clr namespace /// /// /// [XmlSerialization.XmlArray(ElementName = "NamespaceMappings")] [XmlSerialization.XmlArrayItem("NamespaceMapping", typeof(NamespaceMapping))] public List NamespaceMappingList { get { if (m_NamespaceMappingList == null) { m_NamespaceMappingList = new List(); } return m_NamespaceMappingList; } } /// /// known collection types which will be used by code generator /// /// /// [XmlSerialization.XmlArray(ElementName = "CollectionMappings")] [XmlSerialization.XmlArrayItem("CollectionMapping", typeof(ReferencedCollectionType))] public List CollectionMappingList { get { if (m_CollectionMappingList == null) { m_CollectionMappingList = new List(); } return m_CollectionMappingList; } } /// /// whether class need be marked with Serializable attribute /// /// /// [XmlSerialization.XmlElement()] public bool GenerateSerializableTypes { get { return m_GenerateSerializableTypes; } set { m_GenerateSerializableTypes = value; } } /// /// select serializer between DataContractSerializer or XmlSerializer /// /// /// [XmlSerialization.XmlElement()] public ProxySerializerType Serializer { get { return m_Serializer; } set { m_Serializer = value; } } /// /// Control whether or not to UseSerializerForFaults. The System.ServiceModel.FaultImportOptions /// will set its UseMessageFormat Property using this value. /// /// /// [XmlSerialization.XmlElement()] public bool UseSerializerForFaults { get { if (m_UseSerializerForFaultsSpecified) { return m_UseSerializerForFaults; } else { return false; } } set { m_UseSerializerForFaultsSpecified = true; m_UseSerializerForFaults = value; } } /// /// Is UseSerializerForFaults specified? /// /// /// [XmlSerialization.XmlIgnore()] public bool UseSerializerForFaultsSpecified { get { return m_UseSerializerForFaultsSpecified; } } /// /// Control whether or not to WrappedOption. The System.ServiceModel.Channels.WrappedOption /// will set its WrappedFlag Property using this value. /// /// /// [XmlSerialization.XmlElement()] public bool Wrapped { get { if (m_WrappedSpecified) { return m_Wrapped; } else { return false; } } set { m_WrappedSpecified = true; m_Wrapped = value; } } /// /// Is WrappedOption specified? /// /// /// [XmlSerialization.XmlIgnore()] public bool WrappedSpecified { get { return m_WrappedSpecified; } } /// /// Whether we will scan all dependent assemblies for type sharing /// /// /// [XmlSerialization.XmlElement()] public bool ReferenceAllAssemblies { get { return m_ReferenceAllAssemblies; } set { m_ReferenceAllAssemblies = value; } } /// /// controll DataContract type sharing /// /// /// [XmlSerialization.XmlArray(ElementName = "ReferencedAssemblies")] [XmlSerialization.XmlArrayItem("ReferencedAssembly", typeof(ReferencedAssembly))] public List ReferencedAssemblyList { get { if (m_ReferencedAssemblyList == null) { m_ReferencedAssemblyList = new List(); } return m_ReferencedAssemblyList; } } /// /// controll DataContract type sharing /// /// /// [XmlSerialization.XmlArray(ElementName = "ReferencedDataContractTypes")] [XmlSerialization.XmlArrayItem("ReferencedDataContractType", typeof(ReferencedType))] public List ReferencedDataContractTypeList { get { if (m_ReferencedDataContractTypeList == null) { m_ReferencedDataContractTypeList = new List(); } return m_ReferencedDataContractTypeList; } } /// /// control service contract type sharing /// /// /// [XmlSerialization.XmlArray(ElementName = "ServiceContractMappings")] [XmlSerialization.XmlArrayItem("ServiceContractMapping", typeof(ContractMapping))] public List ServiceContractMappingList { get { if (m_ServiceContractMappingList == null) { m_ServiceContractMappingList = new List(); } return m_ServiceContractMappingList; } } /// /// Serializer used in proxy generator /// /// public enum ProxySerializerType { [XmlSerialization.XmlEnum(Name = "Auto")] Auto = 0, [XmlSerialization.XmlEnum(Name = "DataContractSerializer")] DataContractSerializer = 1, [XmlSerialization.XmlEnum(Name = "XmlSerializer")] XmlSerializer = 2, } } }