У меня есть этот тип иерархии классов:параметры конструктора Unity, с закруткой
public interface IA{}
public interface IB{void Foo();}
public class A:IA
{
[Dependency]
IB myb{get;set;}
void myfunc(){ myb.Foo()}
}
public class B:IB
{
public B(IA ia){}
}
Я хочу, чтобы экземпляр класса А с Unity. Но когда я хочу сделать это, я хотел бы написать что-то вроде этого:
public Testclass
{
void TestMethod()
{
IUnityContainer container = new UnityContainer();
A currentA;
container.RegisterType<IB,B>(new InjectionConstructor(currentA);
currentA = container.Resolve<A>();
}
}
Это терпит неудачу на container.RegisterType линии, говоря, что «логический вывод Тип параметра не работает для нулевых значений.»
Как это сделать?
Редактировать: Ahhhh, как я ненавижу это ... Наш Архитектор сделал два интерфейса с одним и тем же именем, и именно поэтому я потратил 2 часа в моей жизни. Даниэль Хильгарт дал мне хорошую идею, но я не мог использовать ее, пока не понял, что resharper импортировал неправильный интерфейс.
Пожалуйста, исправьте форматирование своего кода и сделайте его компилируемым! Код, который вы предоставили, является нечитаемым и недействительным. –
, конечно, он не подлежит компиляции, это мета код. Я просто написал это, чтобы представить свою проблему. Это вполне читаемо на моем компьютере –