【问题标题】:StructureMap: how to specify a Ctor argument by type instead of nameStructureMap:如何通过类型而不是名称来指定 Tor 参数
【发布时间】:2012-12-21 22:14:33
【问题描述】:

我想覆盖我的一个存储库的默认 SessionFactory 实例。我使用以下代码来实现这一点,但我不喜欢指定我试图覆盖的构造函数参数的名称。

var container = new Container(x =>
{
    x.For(typeof(IRepository<Facility>))
        .Use(typeof(Repository<Facility>))
            .CtorDependency<ISessionFactory("sessionFactory")
                .IsNamedInstance("CoolSessionFactory");
});

SM 文档建议,只要 ctor 不接受多个相同类型的参数,那么 CtorDependency 方法不需要您提供参数名称。但是,使用最新版本的 SM,我看不到 CtorDependency 这样的过载。是否有不同的配置选项可以实现相同的效果?

【问题讨论】:

    标签: c# .net dependency-injection inversion-of-control structuremap


    【解决方案1】:

    您需要使用Child&lt;&gt; 而不是CtorDependency&lt;&gt;

    var container = new Container(x =>
    {
        x.For(typeof(IRepository<Facility>))
            .Use(typeof(Repository<Facility>))
                .Child<ISessionFactory>()
                    .IsNamedInstance("CoolSessionFactory");
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-27
      • 2021-03-16
      • 1970-01-01
      • 2012-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-13
      相关资源
      最近更新 更多