2011-06-20 75 views
0
[DataContract] 
public abstract class FooBase 
{ 
    [DataMember] 
    public int Bar { get; set; } 
} 

這是一個基類,我用它作爲DataContracts的其他類的基類。這裏的問題雖然...WCF - DataContract通過複製/粘貼原始代碼或通過共享抽象類的自動生成的代碼?

在Proj1我選擇添加服務引用...(MyService),它會爲我生成代碼,包括FooBase代碼。 在Proj2中,我選擇添加服務引用...(OtherService),它也是這樣。

但是,我想富基類是在它自己的組件,這兩個項目可以參考...所以,是它更好地:

複製/ FooBase類粘貼到其他共享組件,它是什麼?或者,將FooBase類的生成代碼複製/粘貼到另一個共享程序集中?

[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)); 
     } 
    } 
} 

回答

1

你可以把它在一個共享庫,但添加服務引用時,所有引用的程序確保共享庫被引用,並在添加引用對話框中的高級設置,您選擇複用的類型。

我的選擇是使用共享庫中的非生成代碼,即只有數據合同的代碼。

+0

好的,我知道。我問是否使用自動生成的代碼或位於我的服務器上的相同代碼更好?基本上,代碼1或代碼2?我在我的問題中指出,無論是/還是將會進入共享庫。只是一個問題......我該用哪個。 –

+0

如果這是純粹的.Net解決方案,請使用共享庫。 –

+0

抱歉不清楚。我的首選是使用共享庫中的非生成代碼,即只有數據合同的代碼。 –