0

我有一个要使用 CastleWindsor 为我创建的 SqlWorkflowInstanceStore 对象。SqlWorkflowInstanceStore 采用连接字符串的构造函数参数。我的连接字符串在我的 app.config 中。

不使用 CastleWindsor 这工作:

InstanceStore persistanceStoreX = new SqlWorkflowInstanceStore(ConfigManager.Instance.GetSQLConnectionString());

我用 CastleWindsor 试过这些片段:

WindsorContainer.Register(Component.For<InstanceStore>().ImplementedBy<SqlWorkflowInstanceStore>().DependsOn(Property.ForKey("InstanceStore").Eq(ConfigManager.Instance.GetSQLConnectionString())));

var connString = ConfigManager.Instance.GetSQLConnectionString();
WindsorContainer.Register(Component.For<InstanceStore>().ImplementedBy<SqlWorkflowInstanceStore>().DependsOn(new { InstanceStore = connString }));

当解决这个问题时:

_persistanceStore = _iodManager.WindsorContainer.Resolve<InstanceStore>();

我得到了一个有效的容器,但它有一个空的 ConnectionString 字段。

初始化 SqlWorkflowInstanceStore 的正确方法是什么?

InstenceStore 是 SqlWorkflowInstanceStore 的抽象类基础 ConfigManager.Instance.GetSQLConnectionString() 是单例实例

4

1 回答 1

1

通过查看此页面,似乎 ctor 参数SqlWorkflowInstanceStore接受了一个名为的参数,connectionString因此我认为您的注册码应该是:

WindsorContainer.Register(Component.For<InstanceStore>().ImplementedBy<SqlWorkflowInstanceStore>().DependsOn(Property.ForKey("connectionString").Eq(ConfigManager.Instance.GetSQLConnectionString())));
于 2012-10-25T00:45:35.410 回答