Я использую Ninject 1.0 и хотел бы иметь возможность вставлять ленивые делегаты инициализации в конструкторы. Итак, учитывая общее определение делегата:
public delegate T LazyGet<T>();
Я бы просто хотел связать это с IKernel.Get (), чтобы я мог передать ленивый метод получения в конструкторы, например,
public class Foo
{
readonly LazyGet<Bar> getBar;
public Foo( LazyGet<Bar> getBar )
{
this.getBar = getBar;
}
}
Однако я не могу просто позвонить Bind<LazyGet<T>>()
, потому что это открытый универсальный тип. Мне нужно, чтобы это был открытый обобщенный тип, чтобы мне не приходилось связывать все ленивые типы с явными типами. В приведенном выше примере должна быть возможность динамически создавать универсальный делегат, который вызывает IKernel.Get<T>()
.
Как этого добиться с помощью Ninject 1.0?