以下の内容はhttps://hacchi-man.hatenablog.com/entry/2020/08/11/220000より取得しました。


【C#】特定のクラスを継承した全クラスのインスタンスを作成する

このコードは BindingFlags フラグに対応していないので
internal クラスの場合インスタンスが生成できなくなるので注意

internal クラスの場合はインスタンス作成時に引数がかなければ Activator.CreateInstance(t, true) で作成できる

using System;
using System.Linq;

public static T[] CreateInstances<T>(params object[] args) where T : class
{
    var type = typeof(T);

    return type.Assembly.GetTypes()
        .Where(t => !t.IsAbstract && t.IsSubclassOf(type))
        .Select(t => Activator.CreateInstance(t, args) as T)
        .ToArray();
}

使い方

public class Base
{}

public class Child1 : Base
{}

public class Child2 : Base
{}

void Main()
{
    // これで Child1 と Child2 のインスタンスが作成される
    var instances = CreateInstances<Base>();
}



以上の内容はhttps://hacchi-man.hatenablog.com/entry/2020/08/11/220000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14