我正在使用Unity IoC容器,并且需要拦截任何调用以解析某个基本接口,然后运行我自己的自定义代码来构造这些类型。Unity的自定义对象工厂扩展
换句话说,在下面的示例代码中,当我调用container.Resolve<IFooN>()
时,如果它没有得到具体实现类型的实例,则调用MyFactoryFunction
来构造一个,否则我希望它返回缓存副本。
标准统一容器无法构造这些对象(更新:,因为它们是.NET远程对象,所以具体的类不会在本地计算机上的任何组件存在),而我不希望先创建它们并用RegisterInstance存储它们。
interface IFoo : IBase { ... }
interface IFoo2 : IBase { ... }
...
container.Resolve<IFoo2>();
...
IBase MyFactoryFunction(Type t)
{
...
}
我假设我能创造一个团结的扩展要做到这一点,但我不知道是否已经有一个解决方案在那里我可以借用。
原因是我们使用.NET Remoting来创建类。所以我们不能简单地调用它的构造函数 - 客户端上的任何程序集中都不存在具体类型。我们必须连接到服务器,并请求它的对象来满足有问题的接口。 – 2009-09-04 20:08:10