いくつかの .dll ファイルを動的に読み込もうとしています。ファイルは、少なくとも 1 つのクラスを実装するプラグイン (今のところ自己作成) ですMyInterface
。各ファイルについて、次のことを行っています。
Dictionary<MyInterface, bool> _myList;
// ...code
Assembly assembly = Assembly.LoadFrom(currentFile.FullName);
foreach (Type type in assembly.GetTypes())
{
var myI = type.GetInterface("MyInterface");
if(myI != null)
{
if ((myI.Name == "MyInterface") && !type.IsAbstract)
{
var p = Activator.CreateInstance(type);
_myList.Add((MyInterface)p, true);
}
}
}
これを実行するとキャスト例外が発生しますが、回避策が見つかりません。とにかく、なぜこれがまったく機能しないのか疑問に思っています。.NET Framework 3.5 でのソリューションを探しています。
私に起こったもう1つのことは、上記のコードに新しいエントリを追加する前に、次のことを実行した後null
に入ることでした:p
_myList
var p = type.InvokeMember(null, BindingFlags.CreateInstance, null,
null, null) as MyInterface;
p
このコードは、プラグインをロードするための最初の試みでした。理由はnull
まだわかりませんでした。誰かが私を正しい道に導いてくれることを願っています:)