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();
}
}
如果依赖关系是静态的,为什么会这么重要?一般来说,这有关系吗?
答案 0 :(得分:1)
如果依赖关系是静态的,为什么会这么重要?一般来说,这有关系吗?
是 - 在您的情况下,您有一个重置静态成员的实例构造函数,因此静态成员的值将是最后一个构造函数的值。
由于我没有理由将依赖关系设为静态(你没有使用它的静态方法/属性),所以它应该是一个实例(非静态)字段。
答案 1 :(得分:1)
如果_someDependency是静态的,它将被存储在高频堆中,否则它将转到低频堆。