我有几个类派生自抽象类 A - A1、A2、A3 等。
我需要使用它们自己的鉴别器使用如下代码将这些类注册到 BsonClassMap:
BsonClassMap.RegisterClassMap<A1>(cm =>
{
cm.AutoMap();
cm.SetDiscriminator(discriminator)
});
由于将来我会有更多这样的课程,我想使用反射来做到这一点:
foreach (var type in Assembly.GetAssembly(typeof(A))
.GetTypes().Where(t => t.IsClass
&& !t.IsAbstract
&& t.IsSubclassOf(typeof(A))))
{
var discriminator = type.GetField("Discriminator")
.GetRawConstantValue()
.ToString();
var method = typeof(BsonClassMap).GetMethods()
.FirstOrDefault(m => m.IsGenericMethod
&& m.Name == "RegisterClassMap");
if (method == null) continue;
var generic = method.MakeGenericMethod(type);
generic.Invoke(this, null);
}
我怎样才能将这样的 lambda 表达式传递给这个函数?
cm =>
{
cm.AutoMap();
cm.SetDiscriminator(discriminator)
});
我找到了很多关于如何调用泛型方法的描述,但无法让它工作。