6

リフレクションを使用して、ユーザー DLL を調査し、その中にクラスのオブジェクトを作成する必要があります。

それを行う簡単な方法は何ですか?

4

5 に答える 5

14

Activator.CreateInstanceを試してください。

于 2008-09-10T08:56:22.903 に答える
3

System.Reflection.Assembly使用したいクラスです。これには、ユーザー DLL に含まれる型を反復処理するための多くのメソッドが含まれています。各クラスを反復処理して、特定のインターフェイスなどから継承しているかどうかを確認できます。

http://msdn.microsoft.com/en-us/library/system.reflection.assembly_members.aspx

Assembly.GetTypes()タイプのリストを取得する方法、またはAssembly.GetExportedTypes()公開されているタイプのみの方法を調べてください。

于 2008-09-10T08:59:19.667 に答える
1

Activator.CreateInstance を使用して Type オブジェクトからクラスのインスタンスを作成し、Assembly.GetTypes を使用して dll 内のすべての型を取得できます。

于 2008-09-10T08:57:10.467 に答える
1

これらのリンクを見てください:

http://www.java2s.com/Code/CSharp/Development-Class/Createanobjectusingreflection.htm

http://msdn.microsoft.com/en-us/library/k3a58006.aspx

基本的にリフレクションを使用してアセンブリをロードし、関心のある型を見つけます。型を取得したら、そのコンストラクターまたは他のメソッド/プロパティを見つけるように依頼できます。コンストラクターを取得したら、それを呼び出すことができます。簡単!

于 2008-09-10T08:57:33.087 に答える
1

既に述べたように、System.Reflection 名前空間を突く必要があります。

ロードする DLL の場所/名前が事前にわかっている場合は、Assembly.GetTypes() を反復処理する必要があります。

擬似コードでは、次のようになります。

オブジェクトを作成して組み立てます。

アセンブリに含まれるすべての型を反復処理します。

探しているものが見つかったら、それを呼び出します (CreateInstance)…

賢く使ってください。

;)

ざっと見てみたい場合は、Reflection コードがたくさんありますが、タスクは非常に単純で、サンプルを掲載した記事が少なくとも 10 ほどは出回っています。(別名グーグル)。それにもかかわらず、MSDN は Reflection Reference の友です。

于 2008-09-10T09:19:54.813 に答える