1

リフレクションを使用してソリューションにある問題を解決するには、次のコードを指定して、選択する必要がある条件のリストを公開する CheckedListBox をユーザーに表示する必要があります。ユーザーの選択に応じて、特定の動作を変更します。アプリケーションで。現時点では、この投稿のおかげで継承されたクラスの文字列名を取得するのに問題はありませんが、それぞれのインスタンスを取得する方法がわかりませんでした。

        DataTable table = new DataTable();
        table.Columns.Add("Intance", typeof(IConditions)); //INSTANCE of the inherited class
        table.Columns.Add("Description", typeof(string)); //name of the inherited class

        //list of all types that implement IConditions interface
        var interfaceName = typeof(IConditions);
        List<Type> inheritedTypes = (AppDomain.CurrentDomain.GetAssemblies()
            .SelectMany(s => s.GetTypes())
            .Where(p => interfaceName.IsAssignableFrom(p) && p != interfaceName)).ToList();

        foreach (Type type in inheritedTypes)
        {
            IConditions i; //here is where I don't know how to get the instance of the Type indicated by 'type' variable

            //I.E: IConditions I = new ConditionOlderThan20(); where 'ConditionOlderThan20' is a class which implements IConditions interface

            table.Rows.Add(i, type.Name);
        }

オブジェクトを取得することは可能ですか? このような問題に対処するためのより良いアプローチは何ですか?

4

1 に答える 1