1

設定できないプロパティを持つインターフェイスがあります。

public interface IThing
{
    string MyText { get; }
}

プロパティを設定できるようにする実装があります。

public class Thing : ObservableObject, IThing
{
    private string myText = "Testing 1 2 3";

    public string MyText
    {
        get { return this.myText; }
        set
        {
            if (this.myText != value)
            {
                this.myText = value;
                this.RaisePropertyChanged("MyText");
            }
        }
    }
}

これを行うのは、インターフェイスによってオブジェクトを渡すことができるようにするためであり、他のコードはプロパティを変更できませんが、実際の実装を含むコードは変更できます。

しかし、IThing を含むビュー モデルがあり、XAML のプロパティにバインドすると、XAML でそれらを設定できることがわかります。

これを防ぐためのいくつかのオプションは何ですか? 助けてくれてありがとう。

編集:いくつかの不完全な回避策:

  1. 実装クラスのセッターを internal にします。ビューが別のアセンブリにあることがたまたまあるため、XAML でそれらを設定することはできません。しかし、これは単なる偶然です。ビューが同じアセンブリにある場合はどうなりますか?

  2. 実装クラスを保持するが、すべてのプロパティのセッターを提供しない別のクラスを作成します。これは機能するように見えますが、やらなければならないのは面倒です。

まだより良いオプションを探しています。

4

2 に答える 2