- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
目前当我需要向基类中注入(inject)依赖时,我使用下面的代码:
public class BaseClass
{
readonly IService _service;
public BaseClass(IService service)
{
_service = service;
}
}
public class A : BaseClass
{
public A(IService service) : base(service)
{
}
}
public class B : BaseClass
{
public B(IService service) : base(service)
{
}
}
我必须在所有子类中编写大量重复代码。为了避免这些重复的代码,我想我可以使用 CommonServiceLocator 将依赖项注入(inject)基类:
public class BaseClass
{
readonly IService _service;
public BaseClass()
{
_service = ServiceLocator.Current.GetInstance<IService>();
}
}
public class A : BaseClass
{
}
public class B : BaseClass
{
}
这看起来简单多了,但我不确定这是否是一个好的做法。
谢谢
最佳答案
从类中请求依赖称为 Service Locator Pattern ,这是一个 anti-pattern .防止最小化您的应用程序和 IoC 框架之间的依赖性,即使它是 Common Service Locator。
我仍然会选择第一种方法,但我同意如果基类总是需要这种依赖并且您有很多子类型,那么这会变得很麻烦。在这种情况下,进行属性注入(inject):
public class BaseClass
{
public BaseClass()
{
}
public IService Service { get; set; }
}
这样您的图书馆就不用使用服务定位器了。对我来说,这种方法的最大优势之一是它使编写单元测试变得不那么痛苦。
关于c# - 使用 CommonServiceLocator 将依赖项注入(inject)基类是一种好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5737279/
在我生活的世界中,构建一个将所有飞镖都扔到墙上的解决方案,并希望其中一些能命中靶心是一种非常糟糕的解决方案方法。 那么,我的问题出现了,什么时候在约定可接受的生产系统中使用 INSERT IGNORE
在数据处理时,经常会因为index报错而发愁。不要紧,本次来和大家聊聊pandas中处理索引的几种常用方法。 1.读取时指定索引列 很多情况下,我们的数据源是 CSV 文件。假设
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 6 年前。 Improve
我是一名优秀的程序员,十分优秀!