0

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

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

4

3 回答 3

2
var names = assembly.GetTypes().Where(t => baseType.IsAssignableFrom(t)).Select(t => t.Name);

尝试类似上面的方法来获取名称。

使用以下答案作为参考How to find all types in an Assembly that Inherit from a specific Type C#

于 2013-11-12T07:39:25.267 回答
1

您需要使用反射:

using System.IO;
using System;
using System.Reflection;
using System.Linq;

class Program
{
    static void Main()
    {
        Assembly a = typeof(Program).Assembly;

        var types = a.GetTypes().Where(i=>i.IsSubclassOf(typeof(T)));

        foreach(var i in types)
        {
            Console.WriteLine(i);
        }
    }
}

public class T {  }
public class TT : T {  }
public class TTT : T {  }
于 2013-11-12T07:45:21.320 回答
1

反思是最简单的方法(如其他答案中所建议)。

但是(因为您用 标记了问题entity-framework并提到Entities了 )如果您的意图是获取数据库中存在的派生类型列表(以填写查找),您可以尝试以下操作:

var typeNames = context.Set<Person>()
                       .ToList()
                       .Select(x => x.GetType().Name)
                       .Distinct();
于 2013-11-12T07:51:09.287 回答