我正在尝试使用结构图在项目中配置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

08-19 23:10