ResolutionFailedException如果Resolve失败,怎么能让Unity不扔?
有类似的东西TryResolve<IMyInterface>吗?
var container = new UnityContainer();
var foo = container.TryResolve<IFoo>();
Assert.IsNull(foo);
Run Code Online (Sandbox Code Playgroud) 我正在使用Unity IoC容器,我需要拦截对Resolve的任何调用以获取某个基本接口,并运行我自己的自定义代码来构造这些类型.
换句话说,在下面的示例代码中,当我调用时container.Resolve<IFooN>(),如果它没有具体实现类型的实例,则调用MyFactoryFunction构造一个,否则我希望它返回缓存副本.
标准Unity容器无法构造这些对象(更新:因为它们是.NET远程处理对象,因此本地计算机上的任何程序集中都不存在具体类),我不想在前面创建它们用RegisterInstance存储它们.
interface IFoo : IBase { ... }
interface IFoo2 : IBase { ... }
...
container.Resolve<IFoo2>();
...
IBase MyFactoryFunction(Type t)
{
...
}
Run Code Online (Sandbox Code Playgroud)
我假设我可以创建一个Unity扩展来执行此操作,但我想知道是否已经有一个解决方案我可以借用.