我有以下类(class):
public class DatabaseFactory<C> : Disposable, IDatabaseFactory<C> where C : DbContext, BaseContext, new()
{
private C dataContext;
private string connectionString;
public DatabaseFactory(string connectionString)
{
this.connectionString = connectionString;
}
public C Get()
{
return dataContext ?? (dataContext = Activator.CreateInstance(typeof(C), new object[] {connectionString}) as C);
}
protected override void DisposeCore()
{
if (dataContext != null)
dataContext.Dispose();
}
}
当我尝试启动 web api 时,出现以下错误:
无法创建组件 'MyApp.DAL.Implementations.DatabaseFactory'1',因为它需要满足依赖关系。 'MyApp.DAL.Implementations.DatabaseFactory'1' 正在等待以下依赖项:
- 未提供的参数“connectionString”。是不是忘记设置依赖了?
如何正确注册,如何在运行时传递参数?
最佳答案
需要注册构造函数参数:
container.Register(
Component.For<IDatabaseFactory>().ImplementedBy<DatabaseFactory>()
.DependsOn(Dependency.OnValue("connectionString", connectionString))
);
关于c# - CaSTLe Windsor 注册类带有构造函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20243543/