C# 获取C中命名空间中的类列表#

C# 获取C中命名空间中的类列表#,c#,.net,reflection,C#,.net,Reflection,我需要以编程方式获得给定名称空间中所有类的列表。如何在C#中实现这一点(反射?) 没有LINQ: 尝试: Type[]types=Assembly.getExecutionGassembly().GetTypes(); List myTypes=new List(); foreach(类型中的类型t) { if(t.Namespace==“My.Fancy.Namespace”) myTypes.Add(t); } 看看这个,提供的答案返回一个[]类型的数组。你可以很容易地修改它以返回列表我只能

我需要以编程方式获得给定名称空间中所有类的
列表。如何在C#中实现这一点(反射?)

没有LINQ:

尝试:

Type[]types=Assembly.getExecutionGassembly().GetTypes();
List myTypes=new List();
foreach(类型中的类型t)
{
if(t.Namespace==“My.Fancy.Namespace”)
myTypes.Add(t);
}

看看这个,提供的答案返回一个[]类型的数组。你可以很容易地修改它以返回列表

我只能考虑在assebly中循环类型,以找到正确名称空间中的类型

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;
        }
public List GetList()
{
列表类型=新列表();
var assembly=assembly.getExecutionGassembly();
foreach(assembly.GetTypes()中的变量类型)
{
if(type.Namespace==“Namespace”)
{
类型。添加(类型);
}
}
返回类型;
}

Assembly.getExecutionGassembly().GetTypes().ToList()将为您提供所需的列表。是的,Greg,但从技术上讲,这是使用LINQ扩展方法,我的示例旨在说明这一点,而没有.NET 3.5clean非LINQ示例,尽管OP没有说程序集已经加载,因此代码可能返回空集,尽管列表应该很长,并且名称空间可能在更多程序集中:)公平点,我本应该创建一个以汇编参数作为输入的方法,并将客户端调用完全留给OP来完成。;-)在更多程序集中使用相同的名称空间不是我设计它的方式。基本名称空间很好,但我肯定不会让同一名称空间中的类型分布在多个程序集中。那太恶心了。总是有“一句话”。-)是的,你一定喜欢一行:-)这假设整个名称空间都在当前程序集中,充其量只是部分解决方案。War,那什么更好的解决方案呢?当一个问题被标记为重复问题而原始问题没有被引用时,这是多么烦人啊。
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;
        }
var theList = Assembly.GetExecutingAssembly().GetTypes()
                      .Where(t => t.Namespace == "your.name.space")
                      .ToList();