クラスの外部から表示する必要があるフィールドを持つ C# クラスがありますが、クラス内からのみ変更する必要があります。ただし、問題は、フィールドが直接 (またはプロパティによって) ではなく、public mutator メソッドを介して更新されることです。
public class FirstClass
{
public SecondClass TheField {get; private set;}
public FirstClass()
{
TheField = new SecondClass();
}
public void SomeMethod()
{
// ...
TheField.Update(/*parameters*/);
// ...
}
}
public class SecondClass
{
// some fields
public SecondClass() { }
public void Update(/*parameters*/)
{
// do something
}
}
つまり、メソッド Update() に FirstClass 内からのみアクセスできるようにしたいと考えています。
いくつかの可能な解決策と、私がそれらに満足できない理由:
- メソッドではなくセッターで SecondClass を変更します。- パラメータと多くの作業が必要なため、機能しません。
- Update() を public ではなく internal にします。- アセンブリ内から引き続きアクセスできますが、十分ではありません。
- FirstClass から SecondClass を変更します。メソッド Update() を FirstClass に移動し、非公開にして、必要なすべてのフィールドを SecondClass から公開します。・オブジェクト指向感が半端ない。
- SecondClass コンストラクターから Update() を呼び出し、更新が必要になるたびに SecondClass の新しいインスタンスを作成します。- SecondClass には変更されないものがいくつかあり、Update() を呼び出すたびに処理したいため、パフォーマンスが低下します。
これを行う方法はありますか?