Я пытаюсь понять TDD больше, и все примеры, которые я видел относительно DI, были классами / интерфейсами, в которых есть только методы, например.
public interface IUserRepository
{
User GetByID(int ID);
}
public class UserRepo : IUserRepository
{
private IUserRepository Repo;
public UserRepo(IUserRepository repo)
{
this.Repo. = repo;
}
public User GetByID(int ID) {}
}
.....
private void SetupDI()
{
container.Register<IUserRepository>.With(UserRepository);
}
Я недавно начал писать интерфейс со свойствами наэто и остановилось, поскольку не было уверено, как это будет достигнуто.
Имеет ли свойства в интерфейсах ОК с точки зрения DI?Это хороший дизайн?
Я бы предположил, что эти свойства будут внедрены следующим образом:
private void SetupDI()
{
var myStringProp = GetPropValue("MyStringProp");
var myIntProp = GetPropValue("MyIntProp");
container.Register<IUserRepository>.With
(
new UserRepository() {
StringProperty = myStringProp;
IntProperty = myIntProp;
}
);
}
ИЛИ
Вы бы передали все необходимые свойства в конструкторе:
private void SetupDI()
{
var myStringProp = GetPropValue("MyStringProp");
var myIntProp = GetPropValue("MyIntProp");
container.Register<IUserRepository>.With
(
new UserRepository(myStringProp,myIntProp)
);
}