[DataContract]
public abstract class FooBase
{
[DataMember]
public int Bar { get; set; }
}
これは、DataContract である他のクラスの基本クラスとして使用する基本クラスです。ここで問題ですが...
Proj1 で Add Service Reference... (MyService) を選択すると、FooBase コードを含むコードが生成されます。Proj2 で Add Service Reference... (OtherService) を選択すると、同じことが行われます。
しかし、両方のプロジェクトが参照できる独自のアセンブリに Foo 基本クラスを配置したいので、次のことをお勧めします。
FooBase クラスをそのまま他の共有アセンブリにコピー アンド ペーストしますか?
[DataContract]
public abstract class FooBase
{
[DataMember]
public int Bar { get; set; }
}
または、生成された 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));
}
}
}