假设我有一个基本实体类:
public abstract partial class Person
{
public Person()
{
}
public string FirstName { get; set; }
public string LastName { get; set; }
}
我有多个从该实体继承的实体,例如:
public partial class Customer : Person
{
public Customer()
{
}
public int CustomerStatusId { get; set; }
public string AccountNumber { get; set; }
}
以及从Person
类继承的更多实体。
有没有办法可以获得从Person
类继承的所有实体类名?
我想在select
框中显示这些内容,以创建通用的AddUser
方法。
答案 0 :(得分:2)
var names = assembly.GetTypes().Where(t => baseType.IsAssignableFrom(t)).Select(t => t.Name);
尝试类似上面的内容来获取名称。
使用以下答案作为参考How to find all the types in an Assembly that Inherit from a Specific Type C#
答案 1 :(得分:1)
反思是最简单的方法(如其他答案所示)。
然而(因为您使用entity-framework
标记了问题并且您提到了Entities
),以防您的目的是获取存在于数据库中的派生类型列表(至填写查询)你可以试试这个:
var typeNames = context.Set<Person>()
.ToList()
.Select(x => x.GetType().Name)
.Distinct();