作者bombilla (地板别打我!>"<)
看板C_Sharp
标题[问题] dll 的 LoaderExceptions
时间Thu Aug 23 09:46:53 2012
各位,小弟遇到个问题如下:
我现在正在尝试弄一个 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