0


0

なぜVS2005はWebサービスフィールドのメンバーとフィールドの両方を作成するのですか?

Visual Studio 2005でWeb参照を追加すると、wdsl内のすべての要素が重複していることに気付きました。 E.g. 要素 `+ ItemOne `の場合、生成するインターフェイスには ` ItemOne `と ` itemOneField +`の両方が含まれます。 どちらも同じものですが、一方はメンバー、もう一方はフィールドです。 私は、このフィールドはメンバーにとって単なるゲッターだと思う。

私はこれのためにメンバーの代わりにフィールドを使用することを想像することができます…​しかしその場合私の傾向は混乱を避けるためにメンバーをプライベートにすることでした。 このようなメンバーを非公開にする通常の動機は実装の詳細を隠すことであるという事実にもかかわらず、これは明らかにこの場合には当てはまりません。

これを変更すると互換性の問題が発生する可能性が高いことを私は認識していますが、なぜ彼らが初めてこのようにしたのかわかりません。

*そのような変更が以前のバージョンのVSとの互換性の問題を引き起こすことを指摘してはいけません。*私はこれの背後にある「元の」推論に興味があります。

2 Answer


0


バッキングフィールドを持つプロパティです。 どうしたの? 自動プロパティを生成することを期待していましたか? それらは最近まで存在しませんでした。 特に、ASMX(およびWSDL.EXE)はほとんど使用されなくなっているため、動作するものを変更する必要があります。


0


_ 「この背後にある元の理由に興味があります」 _

3.0フレームワークを過ぎたすべてのものとして、プロパティを作成する唯一の方法はプライベート変数とプロパティ名を持つことでした

private string myItemField;

public string myItem() {
  get {
    return myItemField;
  }
  set {
    myItemField = value;
  }
}

しかし今、それは必要ありません…​

public string myItem { get; set; }

問題は、この最後のコードが一番上のコードとしてコンパイルされているということです。たとえ書きやすくても、同じ古い方法でコンパイルされているので、プライベート変数とプロパティになります。

あなたがWeb参照を追加するときに同じことが起こります、それは "もの"を保持するための変数とそれからメソッドを必要とします…​