将类型传递给generics方法(嵌套generics)
如果我没有TRootEntity
,我怎么能调用以下方法,但只有它的TYPE
:
public void Class(Action<IClassMapper> customizeAction) where TRootEntity : class;
最终目标是运行以下代码
var mapper = new ModelMapper(); mapper.Class(ca => { ca.Id(x => x.Id, map => { map.Column("MyClassId"); map.Generator(Generators.HighLow, gmap => gmap.Params(new { max_low = 100 })); }); ca.Property(x => x.Something, map => map.Length(150)); });
它用于创建动态NHibernate HBM
。 这里有更多信息
相关问题请参见此处和此处 。
您不能通过传递运行时类型来编写要运行的通用方法。
generics需要在编译时具有类型。
您可能需要使用reflection(请参阅Ferreira先生的回答,指出如何做到这一点)。
看看伟大的Jon Skeet的答案 。 您应该能够根据您的需求进行调整。