c# - C# 为所有其他类更改一个类的字段的值
问题描述
我有一个类(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 的值在条件为真后更新一次并保持不变直到运行结束?
解决方案
您添加了依赖注入作为标签,但您没有在示例中使用它。实现它并使 A 类成为具有像单例一样的生命周期的可注入服务(使用接口),然后将其注入到其他类中,瞧,您将在任何地方都有相同的实例,并且具有相同的值。以下是我通常的做法:
Container.RegisterType<IAPICacheManager, APICacheManager>(new ContainerControlledLifetimeManager());
然后神奇地传递给你的构造函数:
public BinanceService(IAPICacheManager apiCache, string instanceName, List<object> tracking, IDataService dataService, IMapper mappingEngine) : base(instanceName, tracking)
{
_mappingEngine = mappingEngine;
_dataService = dataService;
if (apiCache != null)
{
_apiCache = apiCache;
_cacheEnabled = true;
.....
这是一个帮助您入门的示例: Unity
推荐阅读
- javascript - 与复选框一起使用的按钮。内容从后面滑入
- r - 将逗号分隔的字符计数为 R 中的因子
- c++ - 使用 C++ 以 13h 图形模式显示位图
- react-native - 如何将我的 React Navigator 包装在 redux 商店中?
- javascript - 如何将元素+数据连接在一起?
- terraform - 如何在 terraform 中使用一个 .tf 文件的输出作为输入不同的 .tf 文件?
- java - Azure-Service-Bus:如何访问 processMessage() 函数中的消息?
- python - Scikit-learn - 如何为 CV 对象使用单个静态验证集?
- python - Python Pytesseract - 无法读取图像
- reactjs - 错误:无效的挂钩调用。钩子只能在 react-native 中的函数组件内部调用