Другим методом является пользователь, устанавливающий для зависимостей. Иногда это сочетается с инъекцией конструктора. Это может быть полезно, если вы хотите изменить версию, которую вы используете позже, без необходимости повторного создания экземпляра.
public interface IFoo
{
void Do();
}
public class IFoo DefaultFoo : IFoo
{
public void Do()
{
}
}
public class UsesFoo
{
private IFoo foo;
public IFoo Foo
{
set { this.foo = value; }
}
public UsesFoo()
{
this.Foo = new DefaultFoo();
}
public UsesFoo( IFoo foo )
{
this.Foo = foo;
}
public void DoFoo()
{
this.Foo.Do();
}
}