获取从基础实体继承的所有实体的类名

时间:2013-11-12 07:36:30

标签: c# entity-framework inheritance

假设我有一个基本实体类:

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方法。

2 个答案:

答案 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();