私有静态依赖与私有依赖

时间:2014-01-29 17:10:38

标签: 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();
    }
  }

如果依赖关系是静态的,为什么会这么重要?一般来说,这有关系吗?

2 个答案:

答案 0 :(得分:1)

  

如果依赖关系是静态的,为什么会这么重要?一般来说,这有关系吗?

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

由于我没有理由将依赖关系设为静态(你没有使用它的静态方法/属性),所以它应该是一个实例(非静态)字段。

答案 1 :(得分:1)

如果_someDependency是静态的,它将被存储在高频堆中,否则它将转到低频堆。