加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 注入的依赖项是公共可访问还是私有?

发布时间:2020-12-15 23:45:14 所属栏目:百科 来源:网络整理
导读:是否应将依赖项存储到具有私有setter和public getter的私有字段或属性?这适用于构造函数DI. 为了清楚起见,在属性示例中,我不希望将这些添加到附带的接口,除非它有意义 – 即它们只在实现类型中可见: interface IFoo { void DoSomething();}class Foo : IFo
是否应将依赖项存储到具有私有setter和public getter的私有字段或属性?这适用于构造函数DI.

为了清楚起见,在属性示例中,我不希望将这些添加到附带的接口,除非它有意义 – 即它们只在实现类型中可见:

interface IFoo {
  void DoSomething();
}

class Foo : IFoo {
  private readonly IService dependency;
  public Foo(IService dependency) {
    this.dependency = dependency;
  }
}

class Bar : IFoo {
  public Foo(IService dependency) {
    this.Dependency = dependency;
  }

  public IService Dependency { get; private set; }
}

解决方法

我总是会建议私有只读字段,只要不需要从对象外部访问依赖项.将您的对象视为“黑匣子”,并尽可能少地放在他们的公共界面中.这种做法更为人熟知的是 encapsulation principle或信息隐藏,也适用于注入的依赖项:暴露的越少,您减少的类与类的用户之间的紧密耦合就越多.

应该提到的另一个原则是对对象的行为进行建模:告诉,不要问.如果您需要完成某项任务,请让对象为您完成.它将在进程中使用其依赖项.询问属性并自己完成工作应该只是数据对象(DTO)的首选.

这也是首先使用构造函数注入的原因:如果将属性作为属性公开是最好的做法,那么每个人都会进行属性注入,因为这意味着更少的代码(我们不需要构造函数).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读