【发布时间】:2010-12-22 13:58:19
【问题描述】:
我需要以编程方式获取给定命名空间中所有类的List。如何在 C# 中实现这一点(反射?)?
【问题讨论】:
-
当一个问题被标记为重复并且没有引用原始问题时,这是多么令人讨厌。
标签: c# .net reflection
我需要以编程方式获取给定命名空间中所有类的List。如何在 C# 中实现这一点(反射?)?
【问题讨论】:
标签: c# .net reflection
var theList = Assembly.GetExecutingAssembly().GetTypes()
.Where(t => t.Namespace == "your.name.space")
.ToList();
【讨论】:
看看这个How to get all classes within namespace?提供的答案返回一个Type[]数组,你可以轻松修改它以返回List
【讨论】:
没有 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);
}
【讨论】:
我只能想到遍历组件中的类型以在正确的命名空间中找到它们
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;
}
【讨论】: