我正在尝试使用Structure Map在我的项目中配置NCommon NHRepository。我如何阻止它选择最贪婪的构造函数?
public class NHRepository<TEntity> : RepositoryBase<TEntity>
{
public NHRepository () {}
public NHRepository(ISession session)
{
_privateSession = session;
}
...
}我的结构图配置
ForRequestedType(typeof (IRepository<>))
.TheDefaultIsConcreteType(typeof(NHRepository<>))干杯,杰克
发布于 2009-07-02 11:19:37
您可以将您希望的构造函数的[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
发布于 2009-07-02 11:31:36
所以对于Razzie是+1,因为如果NHRepository在我自己的程序集中就可以工作,所以我选择用我自己的存储库包装NHRepository,如下所示。
public class Repository<T> : NHRepository<T>
{
[DefaultConstructor]
public Repository()
{
}
public Repository(ISession session)
{
}
}
ForRequestedType(typeof (IRepository<>))
.TheDefaultIsConcreteType(typeof (Repository<>));https://stackoverflow.com/questions/1073782
复制相似问题