Как программно собрать все классы в файлах .cs в папке и добавить в список - PullRequest
0 голосов
/ 27 марта 2020

У меня есть папка с именем «Features» в решении. В этой папке может быть, например, 500 .cs файлов с классами i.

В приведенном ниже примере я вручную поместил 2 из этих 500 классов в список:
Features.testclass.cs
Features.testclass2.cs

Интересно, как можно было бы программным образом собрать ВСЕ классы в этих файлах 500.cs в папке Features и добавить их в список, как я делаю ниже вручную в качестве примера?

Обратите внимание, что я сохраняю новый экземпляр каждого класса в Списке, так как мне нужно вызывать эти классы позже

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());
        }
    }
}

1 Ответ

0 голосов
/ 27 марта 2020

Это решение:

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));
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...