【发布时间】:2009-06-25 21:54:41
【问题描述】:
我想知道是否可以升级我用来支持延迟加载的基本 IoC 容器。 因此,如果我已经注册了 IFoo,我希望 IoC 容器知道如何满足以下两个依赖项(第一个是 IoC 容器工作的标准方式,而第二个返回一个简单的委托,该委托在何时调用 IFoo 的容器它被调用)。
public Bar(IFoo x)
public Bar2(Func<IFoo> lazyFoo)
当我尝试编写实际执行此操作的代码时,问题就出现了。有没有一种语法可以编译下面的伪代码?
public T Resolve<T>()
{
if (T is Func<X>)
return (T) () => Resolve(typeof(X));
return (T)Resolve(typeof(T));
}
或者换个说法,如果我有一个T的类型,我如何检测它是否是Func<X>的实例,如果是,X的类型是什么?
【问题讨论】:
标签: c# generics ioc-container