如何在autofac的RegisterGeneric()方法中使用动态参数?

时间:2016-07-29 00:48:48

标签: c# asp.net asp.net-mvc autofac

现状

我正在逐个注册一些类,所有类都具有以下模式:

builder.RegisterType<NpgsqlDapperRepository<Foo, int>>()
                .As<IDapperRepository<Foo, int>>()
                .WithParameter(new NamedParameter("connectionString", ConnectionString))
                .WithParameter(new NamedParameter("tableName", "Foos"))
                .WithParameter(new NamedParameter("schema", "dbo"))
                .InstancePerLifetimeScope();

我在尝试什么

我想使用RegisterGeneric(),如下所示:

builder.RegisterGeneric(typeof(NpgsqlDapperRepository<,>))
                .As(typeof(IDapperRepository<,>))
                .WithParameter(new NamedParameter("connectionString", ConnectionString))
                .WithParameter(new NamedParameter("tableName", ???)) //TODO: Determine table name from entity type (acquire from dictionary or something). How do I acquire the type?
                .WithParameter(new NamedParameter("schema", "dbo"))
                .InstancePerLifetimeScope();

显然,我不需要注册100个实体,这些实体基本上具有完全相同的配置,只有1个参数不同。

问题

我需要从实体类型中确定表名。使用RegisterGeneric()时如何获取类型?这甚至可能吗?

额外注意

我发现了一些名为ResolvedParameter的东西,并对此进行了调查,但我不确定这是否是我所需要的。我不是想。但是,如果这确实是我需要的,我会很感激我的情况。

1 个答案:

答案 0 :(得分:2)

您可以创建自己的div > img{ border: 5px solid #f3f5f6; }

Parameter
相关问题