2012-01-19 50 views
3

が、私はこのコードを持っている:DLLを特定のフォルダから動的にロードしますか?現時点で

var shellViewLibrary = Assembly.LoadFrom(Path.Combine(_DllsPath, _DllShellView)); 
IEnumerable<Type> types = shellViewLibrary.GetTypes(); 

foreach (Type type in types) 
{ 
    var typeIShellViewInterface = type.GetInterface(_NamespaceIShellView, false); 
    if (typeIShellViewInterface != null) 
    { 
     //here 
    } 
} 

事は、私が//hereを得たところ、私はそのタイプの特定のフォルダでtypeである(つまり、外にあるオブジェクトを作成するActivator.CreateInstanceを使用したいということですフォルダをビルド) 私はこれで、それらのほとんどを、約20の異なるものを試してみました:私が試した、典型的なものがある ... http://msdn.microsoft.com/en-us/library/d133hta4.aspx が、どれも機能しません:

object MyObj = Activator.CreateInstance(shellViewLibrary.FullName, type.FullName); 

または

object MyObj = Activator.CreateInstance(Path.Combine(_DllsPath, _DllShellView), type.FullName); 

私はいつも違う例外、最も一般的なものだ:私は2つのパラメータと正しい方法でActivator.CreateInstanceを使用していないことのように感じる

XamlParseException 

を。私は何をすべきか ?

+0

...ので、私はそれはいくつかの使用であると思います動作するように私にしばらく時間がかかった 'XamlParseException'が発生します。内部例外があるはずです。その行をデバッグする場合は、 'XamlParseException'を掘り下げてソースを見ることができます。あなたがロードしようとしている 'Assembly'が必要としているものを見逃しているようです。 –

+0

"Activator.CreateInstance"の引数を切り替えると、同じエラーが発生するため、何かが完全に間違っているように感じます:/ –

+0

@GuillaumeSlashy Activator.CreateInstanceをtry catchとdebuggingでラッピングすることをお勧めします私とサミュエル・スラードが言ったように、内側の例外を見てください。 Activator.CreateInstanceによってインスタンス化されているコントロールによって使用されるXamlファイルのエラーではなく、ActivatorまたはAssembly.Loadの使用が問題ではないようです。 –

答えて