首页 > 解决方案 > 如何以编程方式收集文件夹中 .cs 文件中的所有类并添加到列表中

问题描述

我在解决方案中有一个名为“Features”的文件夹。例如,该文件夹可以包含 500 个带有类的 .cs 文件。

在下面的示例中,我手动将这 500 个类中的 2 个放入列表中:
Features.testclass.cs
Features.testclass2.cs

我想知道如何以编程方式收集 Features 文件夹中那些 500.cs 文件中的所有类,并将它们添加到列表中,就像我在下面手动执行的示例一样?

请注意,我正在列表中保存每个类的新实例,因为我需要稍后调用这些类

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public interface IFace { String GetValue(); }
        void GetClasses()
        {
            var MyList = new List<IFace>();
            MyList.Add(new Features.testclass());
            MyList.Add(new Features.testclass2());
        }
    }
}

标签: c#

解决方案


这是一个解决方案:

public interface IFace { String GetValue(); }
void GetClasses()
{
    System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly();

    var MyList = new List<IFace>();
    String nameSpace = "WindowsFormsApp1.Features";
    List<String> namespacelist = new List<String>();
    foreach (Type type in asm.GetTypes())
    {
        if (type.Namespace == nameSpace) //"WindowsFormsApp1.Features"
        {
            MyList.Add((IFace)Activator.CreateInstance(type));
        }
    }
}

推荐阅读