c# - 私有(private)静态依赖与私有(private)依赖

标签 c# dependency-injection

  public interface ISomeDependency
  {
    void Calculate( Person person );
  }
  public class SomeDependency : ISomeDependency
  {
    void ISomeDependency.Calculate( Person person )
    {          
      person.Age = 30;
    }
  }

  public class Person
  {
    private static ISomeDependency _someDependency;
    public DateTime BirthDate { get; set; }
    public int Age { get; set; }
    public Person( ISomeDependency someDependency )
    {
      _someDependency = someDependency;
    }
    public void CalculateAge()
    {
      _someDependency.Calculate( this );
    }
  }
  public class Client
  {
    public Client()
    {
      Person p = new Person( new SomeDependency() );
      p.BirthDate = DateTime.Now.AddYears( -30 );
      p.CalculateAge();
    }
  }

为什么依赖项是否是静态的很重要?一般来说,这重要吗?

最佳答案

Why would it matter if the dependency is static or not? In general, does it matter?

是的 - 在您的情况下,您有一个重置静态成员的实例构造函数,因此静态成员的值将是最后一个构造函数被赋予的值

因为没有理由将我可以看到的依赖项设置为静态(您没有使用它的静态方法/属性)它应该是一个实例(非静态)字段。

关于c# - 私有(private)静态依赖与私有(private)依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21437914/

相关文章:

c# - 从不同的 ViewModel 执行相同的 Prism 命令

c# - 使用 Controller 方法注入(inject) Dotnet 核心方法

c# - 手动解析 InstancePerRequest 类型时未收到 Autofac 相同的注入(inject)实例

c# - 使用字符串的依赖注入(inject)(ninject),反模式?

c# - 无法访问的函数和方法对 C# 中的性能有多大影响

c# - 使用 LINQ 将缺失的项目添加到集合中

c# - 使用十六进制而不是十进制更有效率吗?

c# - WPF C# 触摸滚动正在拖动整个窗口

php - laravel - 依赖注入(inject)和 IoC 容器

c# - 如何在 Caliburn.Micro 中使用 Conductor 的依赖注入(inject)