【发布时间】:2018-06-01 11:21:58
【问题描述】:
我有一个类(A 类),它有一个名为 methodA 的方法。
class A
{
public Dictionary<string, double> methodA(double param1, double param2)
{
//do calculations
return result;
}
}
我还有 9 个其他班级(B 级、C 级、....)。它们都有一个名为 myField 的字段。 myField 的值是使用 A 类的 methodA 计算出来的。它们看起来像这样:
class B
{
private Dictionary<string, double> myField;
private readonly A a = new A();
public B()
{
myField = a.methodA(param1, param2)
}
// methods using myField
}
param1 和 param2 是永远不会改变并存储在其他地方的值。因此 myField 的值对于所有类和应用程序的整个运行时都是相同的。现在有一个设计变化。 methodA 被更新并检查某个条件是否为真,并根据运行时变化的条件和参数 param3、param4 计算 myField 的值。
public Dictionary<string, double> methodA(double param1, double param2, double param3, double param4)
{
if(condition)
{
result = .....
} else {
result = .....
}
return result;
}
条件最初为假,并且在运行时仅更改一次。之后 myField 的值应该保持不变,直到运行结束。
我应该如何在我的类定义中实现这一点,以便 myField 的值在条件为真后更新一次并保持不变直到运行结束?
【问题讨论】:
-
你必须再次执行methodA。
-
你可以实现一个AService,它拥有A.methodA的结果。 B 类中的 myField 从 AService.methodAResult 获取其值。
-
您添加了 depdendency-injection 作为标签,但您没有在示例中使用它。实现它并使 Class A 成为具有像单例一样的生命周期的服务,然后将其注入到其他类中,瞧,您将在任何地方都有相同的实例,并且具有相同的值。
标签: c# dependency-injection properties