我需要以编程方式获取给定命名空间中所有类的List
。我怎样才能在C#中实现这个(反射?)?
答案 0 :(得分:26)
var theList = Assembly.GetExecutingAssembly().GetTypes()
.Where(t => t.Namespace == "your.name.space")
.ToList();
答案 1 :(得分:6)
没有LINQ:
尝试:
Type[] types = Assembly.GetExecutingAssembly().GetTypes();
List<Type> myTypes = new List<Type>();
foreach (Type t in types)
{
if (t.Namespace=="My.Fancy.Namespace")
myTypes.Add(t);
}
答案 2 :(得分:2)
看看这个How to get all classes within namespace?提供的答案返回一个Type []数组,你可以轻松修改它以返回List
答案 3 :(得分:1)
我只能想到循环遍历程序集中的类型以找到正确名称空间中的类型
public List<Type> GetList()
{
List<Type> types = new List<Type>();
var assembly = Assembly.GetExecutingAssembly();
foreach (var type in assembly .GetTypes())
{
if (type.Namespace == "Namespace")
{
types.Add(type);
}
}
return types;
}