リフレクションを使用して、ユーザー DLL を調査し、その中にクラスのオブジェクトを作成する必要があります。
それを行う簡単な方法は何ですか?
Activator.CreateInstanceを試してください。
System.Reflection.Assembly
使用したいクラスです。これには、ユーザー DLL に含まれる型を反復処理するための多くのメソッドが含まれています。各クラスを反復処理して、特定のインターフェイスなどから継承しているかどうかを確認できます。
http://msdn.microsoft.com/en-us/library/system.reflection.assembly_members.aspx
Assembly.GetTypes()
タイプのリストを取得する方法、またはAssembly.GetExportedTypes()
公開されているタイプのみの方法を調べてください。
Activator.CreateInstance を使用して Type オブジェクトからクラスのインスタンスを作成し、Assembly.GetTypes を使用して dll 内のすべての型を取得できます。
これらのリンクを見てください:
http://www.java2s.com/Code/CSharp/Development-Class/Createanobjectusingreflection.htm
http://msdn.microsoft.com/en-us/library/k3a58006.aspx
基本的にリフレクションを使用してアセンブリをロードし、関心のある型を見つけます。型を取得したら、そのコンストラクターまたは他のメソッド/プロパティを見つけるように依頼できます。コンストラクターを取得したら、それを呼び出すことができます。簡単!
既に述べたように、System.Reflection 名前空間を突く必要があります。
ロードする DLL の場所/名前が事前にわかっている場合は、Assembly.GetTypes() を反復処理する必要があります。
擬似コードでは、次のようになります。
オブジェクトを作成して組み立てます。
アセンブリに含まれるすべての型を反復処理します。
探しているものが見つかったら、それを呼び出します (CreateInstance)…
賢く使ってください。
;)
ざっと見てみたい場合は、Reflection コードがたくさんありますが、タスクは非常に単純で、サンプルを掲載した記事が少なくとも 10 ほどは出回っています。(別名グーグル)。それにもかかわらず、MSDN は Reflection Reference の友です。