我想覆盖我的存储库之一的默认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的这种过载。是否有可以实现相同目的的其他配置选项?

最佳答案

您需要使用Child<>而不是CtorDependency<>

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

08-04 09:09