将类型传递给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的答案 。 您应该能够根据您的需求进行调整。