Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WCF-通过复制/粘贴原始代码或通过共享抽象类的自动生成代码实现数据契约?_C#_Wcf_Abstract Class_Datacontract_Service Reference - Fatal编程技术网

C# WCF-通过复制/粘贴原始代码或通过共享抽象类的自动生成代码实现数据契约?

C# WCF-通过复制/粘贴原始代码或通过共享抽象类的自动生成代码实现数据契约?,c#,wcf,abstract-class,datacontract,service-reference,C#,Wcf,Abstract Class,Datacontract,Service Reference,这是一个基类,我使用它作为其他类(也是DataContract)的基类。但问题是 在Proj1中,我选择添加服务引用。。。(MyService)并为我生成代码,包括FooBase代码。 在Proj2中,我选择添加服务引用。。。(其他服务)它也会这样做 但是,我希望Foo基类位于它自己的程序集中,两个项目都可以引用它。。。那么,最好是: 按原样将FooBase类复制/粘贴到其他共享程序集中 [DataContract] public abstract class FooBase { [Da

这是一个基类,我使用它作为其他类(也是DataContract)的基类。但问题是

在Proj1中,我选择添加服务引用。。。(MyService)并为我生成代码,包括FooBase代码。 在Proj2中,我选择添加服务引用。。。(其他服务)它也会这样做

但是,我希望Foo基类位于它自己的程序集中,两个项目都可以引用它。。。那么,最好是:

按原样将FooBase类复制/粘贴到其他共享程序集中

[DataContract]
public abstract class FooBase
{
    [DataMember]
    public int Bar { get; set; }
}
或者,将为FooBase类生成的代码复制/粘贴到其他共享程序集中

[DataContract]
public abstract class FooBase
{
    [DataMember]
    public int Bar { get; set; }
}

您可以将其放在共享库中,但在添加服务引用时,请确保已引用共享库,并且在“添加引用”对话框的“高级设置”中,您已在所有引用的程序集中选择了重用类型


我的首选是使用共享库中未生成的代码,即只包含数据契约的代码。

是的,我知道。我在问,是使用自动生成的代码更好,还是使用服务器上的相同代码更好?基本上是代码1还是代码2?我在我的问题中说,要么/要么将进入共享图书馆。只是一个。。。我应该使用哪种。如果这是一个纯.Net解决方案,请使用共享库。很抱歉,不清楚。我的首选是使用共享库中未生成的代码,即只包含数据契约的代码。
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
[System.Runtime.Serialization.DataContractAttribute(Name="FooBase", Namespace="http://schemas.datacontract.org/2004/07/MyNamespace")]
[System.SerializableAttribute()]
[System.Runtime.Serialization.KnownTypeAttribute(typeof(MyNamespace.Proj1.TypeA))]
[System.Runtime.Serialization.KnownTypeAttribute(typeof(MyNamespace.Proj1.TypeB))]
public partial class FooBase : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {

    [System.NonSerializedAttribute()]
    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;

    private int BarField;

    [global::System.ComponentModel.BrowsableAttribute(false)]
    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
        get {
            return this.extensionDataField;
        }
        set {
            this.extensionDataField = value;
        }
    }

    [System.Runtime.Serialization.DataMemberAttribute(IsRequired=true)]
    public int Bar {
        get {
            return this.BarField;
        }
        set {
            if ((this.BarField.Equals(value) != true)) {
                this.BarField = value;
                this.RaisePropertyChanged("Bar");
            }
        }
    }

    public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

    protected void RaisePropertyChanged(string propertyName) {
        System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
        if ((propertyChanged != null)) {
            propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
        }
    }
}