如何解决注入依赖项,该依赖项是类中的静态变量
WinForms应用程序使用以下“配置类”(部分代码):
public class Configuration
{
public static Project currentProject;
}
应用程序中的许多其他类当前都使用此Project
变量,例如:
public class Controller
{
public void processSomething()
{
Configuration.currentProject.doSomething();
}
}
出于松散耦合的目的,我希望能够注入Project
变量作为依赖项。问题是Configuration.currentProject
的值可能会在运行时更改。应该如何处理?可以通过引用解决它吗?
解决方法
我建议传递Func<IProject>
或Func<Project>
。这将使您能够很好地处理对Configuration.currentProject
的更改(因为调用该函数将始终看到static
的当前值),并且还允许相对容易地编写单元测试。
话虽这么说,我强烈建议您不要使用static
和手动依赖项注入。如果您使用的是IoC容器(例如Autofac),则可能内置Func
和单例支持(没有static
)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。