我正在尝试使用结构图在项目中配置NCommon NHRepository。如何停止选择最贪婪的构造函数?
public class NHRepository<TEntity> : RepositoryBase<TEntity>
{
public NHRepository () {}
public NHRepository(ISession session)
{
_privateSession = session;
}
...
}
我的结构图配置
ForRequestedType(typeof (IRepository<>))
.TheDefaultIsConcreteType(typeof(NHRepository<>))
干杯
杰克
最佳答案
您可以将所需的构造函数的[DefaultConstructor]
属性设置为默认值。在您的情况下,在NHRepository()
构造函数上进行设置将使其成为StructureMap初始化的默认构造函数。
更新:好的,在最新版本的StructureMap中,使用.NET 3.5,您还可以使用SelectConstructor方法指定它:
var container = new Container(x =>
{
x.SelectConstructor<NHRepository>(()=>new NHRepository());
});
最后,我确定您可以在StructureMap的XML配置中定义它,但是我没有使用它。您可以对此进行一些搜索。有关上述方法的更多信息,请参见:http://structuremap.sourceforge.net/ConstructorAndSetterInjection.htm#section3