Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
IService _service;
public IService Service
{
set
{
if (_service != null)
throw new InvalidOperationException ();
_service = value;
}
get { return _service; }
}Если у вас в конструкторе будет больше (пускай) десятка зависимостей — это показывает, что у вас что-то не так с дизайном и нарушение SRP, что опять же заслуга constructor injection
public interface IDAO1
{
}
public interface IDAO2
{
}
public interface IService1
{
}
public interface IService2
{
}
public class DAO1 : IDAO1
{
}
public class DAO2 : IDAO2
{
}
class Service1 : IService1
{
readonly IDAO1 dao1;
readonly IDAO2 dao2;
public Service1(IDAO1 dao1, IDAO2 dao2)
{
this.dao1 = dao1;
this.dao2 = dao2;
}
}
class Service2 : IService2
{
readonly IService1 service1;
public Service2(IService1 service1)
{
this.service1 = service1;
}
public void Run()
{
}
}
class ExtrnalCode
{
public void Run()
{
var dao1 = new DAO1();
var dao2 = new DAO2();
var service1 = new Service1(dao1, dao2);
var service2 = new Service2(service1);
service2.Run();
}
}public void Start()
{
var container = CreateContainer();
_gameMain = container.Resolve<GameMain>();
}
public GameObject CreateMyObject() {
GameObject go = new GameObject();
MyComp comp = go.AddComponent<MyComp>();
container.BuildUp(comp);
return go;
}
Dependency Injection в Unity3d