6

我有一个通用的IRepository,它有2个构造函数,其中一个没有参数,另外一个有datacontext参数。 我想在这种情况下使用无参数的构造函数来定义结构图。 我想要一种创建无参数构造函数的方法,其他我见过的解决方案,他们创建一个新的Datacontext并将其传递给具有参数的构造函数。定义默认构造函数通用知识库中的构造函数

+0

这是否对您有帮助? http://stackoverflow.com/questions/289512/structuremap-how-to-define-default-constructor-by-code – uvita 2010-05-03 16:56:31

+0

不becaouse我使用的是通用的存储库!我需要做这样的事情:x.SelectConstructor(IRepository ....... – 2010-05-03 17:07:08

+0

这没有任何意义,接口没有构造函数 – 2010-05-03 17:37:36

回答

4

默认情况下,StructureMap将使用参数最多的构造函数。在你的情况下,因为你想它使用无参数构造函数,请使用DefaultConstructorAttribute

[DefaultConstructor] 
public void Repository<T>() { } 

public void Repository<T>(DataContext dataContext) { } 
+0

是否有可能以任何其他方式执行此操作?在没有访问权限的情况下/不想为您的类添加属性,您无法指定默认构造函数打开泛型类型,因为你不能制定一个构造函数前压力与他们。 – Cargowire 2011-07-15 13:55:35

+0

您也可以配置StructureMap以显式调用其他构造函数。如果我不能修改这个班级,那我会采取这种做法。 – 2011-07-18 15:37:34

+0

但是你实际上不能调用一个开放泛型的构造函数,例如BaseClass 等,因为你不能编译不满足这些参数的表达式。 – Cargowire 2011-07-18 20:36:09