2

3 つのプロジェクトがあるとします。ライブラリと 2 つの実行可能ファイル。

どちらのプログラムもライブラリを使用します。プロジェクト 1 は、内部にクラスのインスタンスを多数作成し、それらをシリアライザーで保存します。プロジェクト 2 はそれらをロードしますが、決して変更を加えるべきではありません。

そのため、プロジェクト 2 では読み取り専用にする必要がありますが、プロジェクト 1 にはフル アクセスが必要です。どうやってそれを設計するのですか?

たとえば、ライブラリに次のクラスがあるとします。

public string Name { get; private set;} 
public int Age { get; private set;}

public Person(string Name, int Age)
{
   this.Name = Name;
   this.Age = Age;
}

これは、読み取り専用として使用するプロジェクト 2 に最適です。

しかし、プロジェクト 1 にとっては非常に面倒です。クラス内のプロパティを 1 つだけ変更するとすぐに、まったく新しいインスタンスを作成する必要があるからです。2 つのプロパティがある場合は問題ありませんが、10 個のプロパティがある場合は非常に面倒です。プロジェクト 2 は、これらの値が const の場合でも問題ありません。

それを設計する最良の方法は何ですか?

4

2 に答える 2

1

条件付きコンパイルはそれを行うことができます.Visual Studioで新しいビルド構成を作成し、条件付きコンパイルシンボルを使用してから、すべての書き込み可能なステートメントをラップして、一方の構成でコンパイルされ、他方の構成ではコンパイルされないようにします。次に例を示します。

public string Name { 
    get; 
#if WriteSupport
    private set;
#endif
} 
public int Age { 
    get; 
#if WriteSupport
    private set;
#endif
}

public Person(string Name, int Age)
{
   this.Name = Name;
   this.Age = Age;
}
于 2013-04-22T17:38:25.703 に答える