3

我有一个通用接口:

public interface IRepository<T> { ... }

我有一个这样的实现:

public class Repository<T> {
    public Repository<T>() { ... }
}

StructureMap (v 2.6.3) 配置如下:

For(typeof(IRepository<>)).Use(typeof(Repository<>));

当我尝试IRepository<Something>从 StructureMap 中取出一个时,我得到了Repository<Something>预期的结果。万岁!

现在我添加了第二个构造函数,实现如下所示:

public class Repository<T> {
    public Repository<T>() { ... }
    public Repository<T>(string database) { ... }
} 

当我尝试获取IRepository<Something>now 时,我得到一个异常,因为它默认尝试使用带有参数的新构造函数。嘘!

如何更改我的 StructureMap 配置,以便它知道使用无参数构造函数?

4

1 回答 1

5

您可以通过使用 [DefaultConstructor] 属性标记您希望 StructureMap 使用的构造函数来实现此目的。正如您在StructureMap 文档中看到的那样,默认情况下它是贪婪的。

于 2012-05-18T11:44:44.707 回答