我有一个 C# 类,其字段需要从类外部可见,但只能从类内部进行更改。但是,问题在于该字段是通过公共 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 中访问。
很少有可能的解决方案以及我对它们不满意的原因:
- 使用 setter 而不是方法更改 SecondClass。- 行不通,因为我需要有参数和很多事情要做。
- 将 Update() 设为内部而不是公开。- 仍然可以从程序集中访问,但还不够好。
- 从 FirstClass 修改 SecondClass,即。将方法 Update() 移动到 FirstClass,使其私有并从 SecondClass 公开所有需要的字段。- 感觉不是很面向对象。
- 每次需要更新时,从 SecondClass 构造函数调用 Update() 并创建一个 SecondClass 的新实例。- 性能会受到影响,因为 SecondClass 中有一些东西永远不会改变,我每次调用 Update() 时都想处理它。
有没有办法做到这一点?