-1

WCF サービスを使用してオブジェクトを正常に送信していますが、動作しないクラスが 1 つあります。WCF サービスがビルドされ、WCF テスト クライアントでオブジェクトを返す関数を呼び出すことができますが、コンシューマーであるプロジェクトでサービス参照を更新すると、サービスを使用できなくなります。

クラスのコピーはこちら

//[Serializable]
[DataContract]
public class TillCompanySystem : INotifyPropertyChanged
{

    // Internal private member variables
    private String _sTillCompanySystemID = "";
    private String _sValue = "";

    // Events
    //[field: NonSerialized]
    public event PropertyChangedEventHandler PropertyChanged;

    // Constructor
    public TillCompanySystem()
    {

    }

    // Public properties
    #region Public Properties

    // Public properties
    [DataMember]
    public String TillCompanySystemID
    {
        get { return _sTillCompanySystemID; }
        set
        {
            _sTillCompanySystemID = value;
            OnPropertyChanged(new PropertyChangedEventArgs("TillCompanySystemID"));
        }
    }

    [DataMember]
    public String Value
    {
        get { return _sValue; }
        set
        {
            _sValue = value;
            OnPropertyChanged(new PropertyChangedEventArgs("Value"));
        }
    }

    // End region public properties
    #endregion

    // All objects need to support ToString
    public override String ToString()
    {
        return TillCompanySystemID.ToString();
    }

    // Public Events
    public void OnPropertyChanged(PropertyChangedEventArgs e)
    {
        if (PropertyChanged != null)
            PropertyChanged(this, e);
    }
}

なぜこれがうまくいかないのか、私には本当にわかりません。このクラスと他のクラスとの唯一の違いは、以前はシリアル化可能だったということですが、それがどのように違いを生むのかわかりません。ただし、メタデータからクラスを表示すると、クラスは依然としてシリアライズ可能に見えます。私はすべてを再構築しようとしましたが、それは修正されませんでした。

誰にもアイデアはありますか?

前もって感謝します

エド

4

1 に答える 1

0

それが機能していなかった理由は、誰かがプロジェクトを datalayer プロジェクトのコンパイル済みバージョンを参照させたためでした。つまり、このクラスは常にアクセス可能であり、プロジェクトに新しいクラスを追加することができ、それらを見つけましたが、コンパイルされた形式で存在していたため、この特定のクラスを再構築してデータコントラクトにすることはありません。

于 2013-07-10T10:18:40.973 に答える