0

「ビジネス オブジェクト」に「管理テーブル」を表示する適切な方法は何ですか? Address オブジェクトには次のものがあります。

public class Address
{
    public int AddressID { get; set; }
    public KeyValuePair<short, string> County { get; set; }
    ...
}

KeyValuePair<,>プロパティに関する限り、このオブジェクトをどのようにインスタンス化するのでしょうか?

私の推測は次のとおりです。

var myAddress = new Address { AddressID = 3, County = new KeyValuePair<short, string>(32, "La Crosse")}

編集

KeyValuePair<>これは、別のプログラマーの推奨に基づいて私が置き換えているものです。

.....Address.cs..... 
public County County { get; set; }

.....County.cs.....
public class County
{
    public short? CountyID { get; set; }

    public string CountyName { get; set; }
}

2 つまたは 3 つ目の方法のうち、さらに優れた方法はありますか?

4

4 に答える 4

3

KeyValuePair<T1, T2>この場合、何も得られません。

明確にしないのはなぜですか?

public class Address
{
    public int AddressID { get; set; }
    public int CountyCode { get; set; }
    public string CountyName { get; set; }
}

Countyまたは別のバージョンでは、2 つのプロパティを使用して型を定義し、代わりにその型のプロパティを使用します。

コードでは、明快さが王様です。

于 2012-02-20T17:12:39.150 に答える
3

コードを実行したところ、期待どおりに機能しました。

プロパティにはcountry正しい値Key=32Value=がありLa Crosseます。


あなたの新しいコードは醜いです。Countryプロパティのセッターを削除するか、Countryクラスを不変にします。この種の二重の可変性は、発生するのを待っているバグです。

=>マッピングが固定されているため、Countryクラスを不変にすることはおそらく正しい決定です。IdName

私は使用します:

public class County
{
    public short? ID { get; private set; }
    public string Name { get; private set; }

    private Country(short? id,string name)
    {
      ID=id;
      Name=name;
    }
}
于 2012-02-20T17:10:22.733 に答える
0

Country オブジェクトを作成して、その短い文字列が表すものを明確にします。

于 2012-02-20T17:15:03.637 に答える
0

ルカゾイドは、なぜこれをしないのかという良いヒントを与えてくれます。実際、バス、あなたが示している初期化はうまくいくでしょう。デバッガーを使用すると、これをかなり簡単に証明できます。質問は何ですか?

于 2012-02-20T17:12:07.273 に答える