3

私はアーキテクチャにDDDを使用したソリューションに取り組んでいます。ViewModelにValueObjectを指すプロパティがあり、ビューモデルはINotifyPropertyChangedインターフェイスも実装しています。ユーザーがフロントエンドにデータを入力すると、ValueObjectの値が変更されます。私が遭遇している問題は、値オブジェクトが不変であると想定されていることです。この問題を回避するにはどうすればよいですか?前もって感謝します。

4

1 に答える 1

2

何かを編集できる場合は、不変の値の可変コンテナが必要です。したがって、ビューモデルは、不変の値に直接作用するのではなく、可変のコンテナに作用する必要があります。

整数は、そのような不変の値オブジェクトの例です。Int32型には、オブジェクトの状態を変更できるメンバーがありません。整数を置き換えることはできますが、変更することはできません。したがって、整数のビューモデルは次のようになります。

public MutableIntegerViewModel
{
    private readonly mutableInteger;

    public MutableIntegerViewModel(MutableInteger mutableInteger)
    {
        this.mutableInteger = mutableInteger;
    }

    public string DisplayText
    {
        get
        {
            return this.mutableInteger.Value.ToString(
                CultureInfo.CurrentCulture);
        }
        set
        {
           this.mutableInteger.Value = 
               Int32.Parse(value, CultureInfo.CurrentCulture);
        }
    }
}

これはどこMutableIntegerにありますか:

public class MutableInteger
{
   public int Value { get; set; }
}

ここではエラー処理と変更通知を省略しましたが、うまくいけば、あなたはその考えを理解するでしょう。

また、この例は、aと。を持つCustomerクラスの一般的な例と実際には違いがないことに注意してください。文字列も不変であるため、不変の値用の可変コンテナがあります。FirstNameLastName

于 2010-03-22T14:06:52.183 に答える