(我在这里使用EF6)
说我有一个抽象类:
public abstract class MyContext<T> : DbContext
让我们使用它:
public class MyTestContext : MyContext<MyTestContext>
{
public DbSet<Object1> Object1 { get; set; }
public DbSet<Object2> Object2 { get; set; }
}
现在,说我想遍历我的抽象类中MyTestContext中的所有DbSet。似乎可以正常工作(这在我的抽象类的方法中):
var dbSetProperties = typeof(T).GetProperties().Where(p => p.PropertyType == typeof(DbSet<>));
但是我得到“枚举没有结果”。
我在这里做错了什么?谢谢!
编辑注意-我不希望预先知道泛型类型参数-我实际上是在确定每个DbSet中的类型。
最佳答案
因此,Foo<T>
的类型不是Foo<>
。您需要获取Foo<T>
的通用类型定义并进行比较。
var dbSetProperties = typeof(MyTestContext)
.GetProperties()
.Where(p => p.PropertyType.GetGenericTypeDefinition() == typeof(DbSet<>));
关于c# - 如何遍历泛型中的所有DbSet?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37484106/