インターフェイスを実装するクラスのリストを取得するにはどうすればよいですか?

covfefe

インターフェイスを実装するクラスのリストを取得し、プログラムの後のある時点で、これらのクラスをインスタンス化して、コンストラクターにパラメーターを渡そうとしています。

前のStackOverflowページで、空のコンストラクターを使用してクラスをインスタンス化する次のコードを見ました。

var preprocessors = from t
                    in Assembly.GetExecutingAssembly().GetTypes()
                    where t.GetInterfaces()
                           .Contains(typeof(Preprocessing))
                       && t.GetConstructor(Type.EmptyTypes) != null
                    select Activator.CreateInstance(t) as Preprocessing;

ただし、コンストラクターに何らかのパラメーターを渡さずに一部のクラスをインスタンス化することは望ましくありません(パラメーターは、forループで取得されるため、インスタンス化するまで待つ必要があります)。

インスタンス化するクラスのリストを取得するために、これを実行してみました。

var preprocessors = from t
                    in Assembly.GetExecutingAssembly().GetTypes()
                    select t.GetInterfaces()
                            .Contains(typeof(Preprocessing))

しかし、これを行った後、クラスにアクセスしてインスタンス化する方法がわかりませんでした。これに関するいくつかのガイダンスを本当にいただければ幸いです。ありがとう!

編集:Activator.CreateInstance(...)かっこに何を入れるべきかわかりません私はこのようなものを入れてみました:

foreach (var sim in similarities)
{
  var a = Activator.CreateInstance(sim, preprocessedData) as Preprocessing;

しかし、それはエラーをスローしています。おそらく、preprocessedDataDenseMatrixオブジェクト(MathNet Numericsライブラリから)であるためです。DenseMatrix配列ではなくパラメータとしてを送信する方法はありますか?

covfefe

すべての回答に感謝します、彼らは私がこれを理解するのを助けるのに大いに役立ちました。

ここにある他の解決策のいくつかも私がしたことと同等かもしれませんが、これは私にとってはうまくいきました。

var preprocessors = from t in Assembly.GetExecutingAssembly().GetTypes()
                            where t.GetInterfaces().Contains(typeof(Preprocessing))
                            select Activator.CreateInstance(t, originalData) as Preprocessing;  // Create instance of class with originalData as parameter

// Obtain a list of all types in the assembly (will be instantiated in the foreach loop)
var similarities = Assembly.GetExecutingAssembly().GetTypes();

これは、インスタンスを作成し、forループでパラメーターを渡した方法です。

foreach (var sim in similarities)
{
   if (sim.GetInterfaces().Contains(typeof(Similarity)))   // Check if the assembly types are of type Similarity
   {
      // Create instance of similarity class with preprocessedData as a parameter
      var similarityObject = Activator.CreateInstance(sim, preprocessedData) as Similarity;

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

インターフェイスを動的に実装するクラスからメソッドを取得するにはどうすればよいですか?

分類Dev

インターフェイスの実装クラスのタイプパラメータを設定するにはどうすればよいですか?

分類Dev

ネストされた非静的クラスをインターフェイスに実装するにはどうすればよいですか?

分類Dev

実装クラスからインターフェイスを取得するにはどうすればよいですか?

分類Dev

クラスにインターフェイスを実装し、別のクラスから継承させるにはどうすればよいですか?

分類Dev

インターフェイスを実装するクラスにあるメソッドを、そのインターフェイスのタイプのオブジェクトで呼び出すにはどうすればよいですか?

分類Dev

インターフェイスの匿名実装を作成するにはどうすればよいですか?

分類Dev

インターフェイスを実装する基本クラスから派生したインスタンスのリストを作成するにはどうすればよいですか?

分類Dev

異なるクラスに対して1つのインターフェイス実装を作成するにはどうすればよいですか?

分類Dev

クラスパスでインターフェースのすべての実装を見つけるにはどうすればよいですか?

分類Dev

Javaの複数の実装クラスでダブルインターフェイスを使用するにはどうすればよいですか?

分類Dev

インターフェイスからそのインターフェイスを実装するクラスへの列挙型を取得するにはどうすればよいですか?

分類Dev

ジェネリックインターフェースのすべての実装をautofacに登録するにはどうすればよいですか?

分類Dev

Pythonでインターフェイスを実装するにはどうすればよいですか?

分類Dev

インターフェイスがJavaで実装しているクラス型を参照するにはどうすればよいですか?

分類Dev

変更できないクラスを作成してインターフェイスを実装するにはどうすればよいですか?

分類Dev

クラスメンバーを使用してインターフェイスを実装するにはどうすればよいですか?

分類Dev

実装クラスからジェネリックインターフェイスの型パラメーターを取得するにはどうすればよいですか?

分類Dev

Mac OS Xのシェルにスクリプトインタープリターを実装するにはどうすればよいですか?

分類Dev

List <インターフェイスを実装するオブジェクト>をメソッドに渡すにはどうすればよいですか?

分類Dev

ジェネリック型のインターフェースを実装するにはどうすればよいですか?

分類Dev

Pythonでオブジェクトのリストをインスタンス属性として実装するにはどうすればよいですか?

分類Dev

ドロップダウンリストを文字インターフェイスに実装するにはどうすればよいですか?

分類Dev

Iterableインターフェースを実装するにはどうすればよいですか?

分類Dev

子クラスにインターフェイスプロパティを実装するにはどうすればよいですか?

分類Dev

インターフェイスに別のインターフェイスを実装させるにはどうすればよいですか

分類Dev

(それらのクラスを変更せずに)2つの共通インターフェースを実装する多くのクラスのインスタンスのコレクション/リストを作成するにはどうすればよいですか?

分類Dev

インターフェイスのクラスを知っているだけでインターフェイスを実装するクラスのオブジェクトをメソッドに渡し、それをArrayListに追加するにはどうすればよいですか?

分類Dev

Javaのインターフェイスオブジェクトに基づいて実装クラス名を取得するにはどうすればよいですか

Related 関連記事

  1. 1

    インターフェイスを動的に実装するクラスからメソッドを取得するにはどうすればよいですか?

  2. 2

    インターフェイスの実装クラスのタイプパラメータを設定するにはどうすればよいですか?

  3. 3

    ネストされた非静的クラスをインターフェイスに実装するにはどうすればよいですか?

  4. 4

    実装クラスからインターフェイスを取得するにはどうすればよいですか?

  5. 5

    クラスにインターフェイスを実装し、別のクラスから継承させるにはどうすればよいですか?

  6. 6

    インターフェイスを実装するクラスにあるメソッドを、そのインターフェイスのタイプのオブジェクトで呼び出すにはどうすればよいですか?

  7. 7

    インターフェイスの匿名実装を作成するにはどうすればよいですか?

  8. 8

    インターフェイスを実装する基本クラスから派生したインスタンスのリストを作成するにはどうすればよいですか?

  9. 9

    異なるクラスに対して1つのインターフェイス実装を作成するにはどうすればよいですか?

  10. 10

    クラスパスでインターフェースのすべての実装を見つけるにはどうすればよいですか?

  11. 11

    Javaの複数の実装クラスでダブルインターフェイスを使用するにはどうすればよいですか?

  12. 12

    インターフェイスからそのインターフェイスを実装するクラスへの列挙型を取得するにはどうすればよいですか?

  13. 13

    ジェネリックインターフェースのすべての実装をautofacに登録するにはどうすればよいですか?

  14. 14

    Pythonでインターフェイスを実装するにはどうすればよいですか?

  15. 15

    インターフェイスがJavaで実装しているクラス型を参照するにはどうすればよいですか?

  16. 16

    変更できないクラスを作成してインターフェイスを実装するにはどうすればよいですか?

  17. 17

    クラスメンバーを使用してインターフェイスを実装するにはどうすればよいですか?

  18. 18

    実装クラスからジェネリックインターフェイスの型パラメーターを取得するにはどうすればよいですか?

  19. 19

    Mac OS Xのシェルにスクリプトインタープリターを実装するにはどうすればよいですか?

  20. 20

    List <インターフェイスを実装するオブジェクト>をメソッドに渡すにはどうすればよいですか?

  21. 21

    ジェネリック型のインターフェースを実装するにはどうすればよいですか?

  22. 22

    Pythonでオブジェクトのリストをインスタンス属性として実装するにはどうすればよいですか?

  23. 23

    ドロップダウンリストを文字インターフェイスに実装するにはどうすればよいですか?

  24. 24

    Iterableインターフェースを実装するにはどうすればよいですか?

  25. 25

    子クラスにインターフェイスプロパティを実装するにはどうすればよいですか?

  26. 26

    インターフェイスに別のインターフェイスを実装させるにはどうすればよいですか

  27. 27

    (それらのクラスを変更せずに)2つの共通インターフェースを実装する多くのクラスのインスタンスのコレクション/リストを作成するにはどうすればよいですか?

  28. 28

    インターフェイスのクラスを知っているだけでインターフェイスを実装するクラスのオブジェクトをメソッドに渡し、それをArrayListに追加するにはどうすればよいですか?

  29. 29

    Javaのインターフェイスオブジェクトに基づいて実装クラス名を取得するにはどうすればよいですか

ホットタグ

アーカイブ