现状
我正在逐个注册一些类,所有类都具有以下模式:
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
的东西,并对此进行了调查,但我不确定这是否是我所需要的。我不是想。但是,如果这确实是我需要的,我会很感激我的情况。
答案 0 :(得分:2)
您可以创建自己的div > img{ border: 5px solid #f3f5f6; }
Parameter