1

我有一种情况,一个类的构造函数需要两个实现接口的相同具体类型的实例。这是为了能够使用“任务”来并行运行它们以减少时间。

构造函数代码是这样的:

公共 SomeUsingClass (ISomeDependency someDepOne, ISomeDependency someDepTwo) { }

在这里,我只有一个实现 ISomeDependency 的具体类,即 SomeDependencyClass。

当我获得 SomeUsingClass 的实例时,我必须确保这两个参数都指向 SomeDependencyClass 的不同实例。这是因为,当实例将在两个单独的任务下使用时,它们的“状态”不应与另一个冲突。

我尝试使用 ISomeDependency 的命名实例(将它们命名为“instanceOne”和“instanceTwo”。代码如下所示:

.For<ISomeDependency>().Add<SomeDependency>().Named("instanceOne");
.For<ISomeDependency>().Add<SomeDependency>().Named("instanceTwo");

...然后使用以下内容创建 using 类的实例:

.For<SomeUsingClass>().Use<SomeUsingClass>()
.Ctor<ISomeDependency>("someDepOne")
.IsNamedInstance("instanceOne")
.Ctor<ISomeDependency>("someDepTwo")
.IsNamedInstance("instanceTwo");

这会导致以下错误:

没有注册默认实例,并且无法为类型“ISomeDependency”自动确定。

我曾明确提到要使用带有名称的特定实例。我哪里做错了?

4

1 回答 1

0

您只需要在注册时指定AlwaysUnique()

.For<ISomeDependency>().AlwaysUnique().Add<SomeDependency>().Named("instanceOne");
.For<ISomeDependency>().AlwaysUnique().Add<SomeDependency>().Named("instanceTwo");
于 2015-08-11T15:57:34.350 回答