首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结构图-我不想使用最贪婪的构造函数!

结构图-我不想使用最贪婪的构造函数!
EN

Stack Overflow用户
提问于 2009-07-02 11:13:57
回答 2查看 1K关注 0票数 7

我正在尝试使用Structure Map在我的项目中配置NCommon NHRepository。我如何阻止它选择最贪婪的构造函数?

代码语言:javascript
复制
 public class NHRepository<TEntity> : RepositoryBase<TEntity>
 {

    public NHRepository () {}


    public NHRepository(ISession session)
    {
        _privateSession = session; 
    }

    ...
}

我的结构图配置

代码语言:javascript
复制
ForRequestedType(typeof (IRepository<>))
                .TheDefaultIsConcreteType(typeof(NHRepository<>))

干杯,杰克

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-07-02 11:19:37

您可以将您希望的构造函数的[DefaultConstructor]属性设置为默认值。在本例中,在NHRepository()构造函数上设置它将使其成为StructureMap初始化的默认构造函数。

更新:嗯,在最新版本的StructureMap中,使用.NET 3.5,您还可以使用SelectConstructor方法指定它:

代码语言:javascript
复制
var container = new Container(x =>
{
  x.SelectConstructor<NHRepository>(()=>new NHRepository());
});

最后,我确信您将能够在StructureMap的XML配置中定义它,但我还没有使用它。你可以在上面搜索一下。有关上述方法的详细信息,请参阅:http://structuremap.sourceforge.net/ConstructorAndSetterInjection.htm#section3

票数 8
EN

Stack Overflow用户

发布于 2009-07-02 11:31:36

所以对于Razzie是+1,因为如果NHRepository在我自己的程序集中就可以工作,所以我选择用我自己的存储库包装NHRepository,如下所示。

代码语言:javascript
复制
public class Repository<T> : NHRepository<T>
{
    [DefaultConstructor]
    public Repository()
    {

    }

    public Repository(ISession session)
    {

    }
}

ForRequestedType(typeof (IRepository<>))
                .TheDefaultIsConcreteType(typeof (Repository<>));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1073782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档