[問題] dll 的 LoaderExceptions
各位,小弟遇到個問題如下:
我現在正在嘗試弄一個 plug-in 架構的小程式。
有一個主要的 Class 會包在主架構中,同時它也會發佈給其它的 plug-in
Class A 在 Dll 1
其它的 plug-in 都要繼承 Class A,我在 Class 裡弄了一些共有的 methods 和屬性,
Class B : A 在 Dll 2
Class C : A 在 Dll 3
Class D : A 在 Dll 2
Class E : A 在 Dll 4
...etc
那我的問題就是當我嘗試去載入這些 plug-in 的時候,都會發生 LoaderExceptions。
我該朝哪個方向去解決這個問題??
我有試著朝 TypeForwarding 的方向去試,但還是失敗。
以下是我的程式碼片斷:
foreach (string files in Directory.GetFiles(inPath, "*.dll"))
{
Assembly asm = Assembly.LoadFile(files);
/*都是在這邊的 asm.GetTypes() 吐出 ReflectionTypeLoaderException 的 */
List<Type> types = new List<Type>(asm.GetTypes());
List<Type> list = types.FindAll(delegate(Type t)
{
if (t.BaseType == null) return false;
if (t.BaseType.Name == null) return false;
/* inBaseTypeName 是 method 的輸入參數 */
if (t.BaseType.Name.CompareTo(inBaseTypeName) != 0) return false;
return true;
});
if (list != null)
{
/* outModules 是 method 的 ref 參數 */
outModules = (outModules == null) ? new List<Type>() : outModules;
outModules = list;
}
}
最後,感謝各位的指教了。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.128.88.200