考虑这个例子:
public class MyDisposable : IDisposable
{
public MyDisposable(int dummy)
{
}
public void Dispose()
{
}
}
var container = new UnityContainer()
.RegisterType<IDisposable, MyDisposable>();
// in real code this is dependency of type Func<IDisposable>
var factory = container.Resolve<Func<IDisposable>>(new ParameterOverride("dummy", 0));
var disposable = factory(); // this line throws exception
问题是自动工厂不使用参数覆盖。
此解决方案正常,但在我的情况下不是一个选项:
var disposable = container.Resolve<IDisposable>(new ParameterOverride("dummy", 0));
我需要通过工厂构建IDisposable实现,但该实现需要一些构造参数。如果不实施自己的工厂,是否有可能解决这个问题?