public class Respository<T> where T : Pager{
public int Insert(T item){}
}
类中提供了多种静态方法。
想在运行时通过类名称来调用。
应该怎么实现?
反射里面有专门处理泛型的方法.
不管是泛型方法还是泛型类.都可以传入泛型参数来调用.
base.OnModelCreating(builder);
var mi = builder
.GetType()
.GetMethods()
.FirstOrDefault(a =>
a.ToString() == "Microsoft.EntityFrameworkCore.ModelBuilder ApplyConfiguration[TEntity](Microsoft.EntityFrameworkCore.IEntityTypeConfiguration`1[TEntity])");
var asm = Assembly.GetAssembly(this.GetType());
asm.GetTypes()
.Where(a =>
a.GetInterfaces()
.Any(i => i.FullName.Contains("Microsoft.EntityFrameworkCore.IEntityTypeConfiguration")))
.Select(a =>
{
return new { t = a.GetInterfaces().First().GenericTypeArguments.First(), o = asm.CreateInstance(a.FullName) };
})
.ToList().ForEach(a =>
{
mi.MakeGenericMethod(a.t).Invoke(builder, new[] { a.o });
});
这个是我写的ef core 自动解析映射配置类的方法.就是泛型反射调用
谢谢!