我有以下类层次结构:
public class FirstProvider : IFirstProvider
{
public FirstProvider (string data, ISecondProvider provider)
{
...
}
}
public class SecondProvider : ISecondProvider
{
public SecondProvider (string data)
{
...
}
}
public interface IProviderFactory
{
T Create<T>(string data) where T : IProvider;
}
IFirstProvider 和 ISecondProvider 都实现了 IProvider 并在容器上正确注册。我想要做的是从我的 IProviderFactory 获取 FirstProvider 的实例,如下所示:
public void DoSomething()
{
var provider = _providerFactory.Create<IFirstProvider>("my data");
}
此时我收到以下异常:
“缺少依赖。
组件 SecondProvider 依赖于字符串,无法解析。
确保依赖项在容器中正确注册为服务,或作为内联参数提供。”
Windsor 似乎没有通过它必须解析的依赖链来传递 ITypedFactory 的参数以创建类的实例。有没有其他方法可以支持这个设计,或者我应该重新考虑我的设计?