У меня есть этот тип иерархии классов:
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){}
}
Я хочу создать экземпляр класса A с Unity.Но когда я хочу сделать это, я хотел бы написать что-то вроде этого:
public Testclass
{
void TestMethod()
{
IUnityContainer container = new UnityContainer();
A currentA;
container.RegisterType<IB,B>(new InjectionConstructor(currentA);
currentA = container.Resolve<A>();
}
}
Это терпит неудачу в строке container.RegisterType, говоря, что «Вывод типа параметра не работает для нулевых значений».
Как заставить это работать?
Редактировать: Ааааа, как я ненавижу это ... Наш Архитектор сделал два интерфейса с одинаковым именем, и именно поэтому я потратил 2 часа своей жизни.Даниэль Хилгарт дал мне хорошую идею, но я не смог ее использовать, пока не понял, что reharper импортировал неправильный интерфейс.