【发布时间】:2009-10-21 09:51:19
【问题描述】:
一个。我的 C# 程序将加载一个 dll(它是动态的),现在让我们使用 a.dll(类似地,我的程序将加载更多的 dll,如 b.dll、c.dll 等......)。
b.我的程序将在 a.dll 中调用“Onstart”方法(对于所有 dll,它都是常量)。
我可以通过反射机制实现以上两种情况。
问题是
一个。如果我的 a.dll 有任何引用说 xx.dll 或 yy.dll,那么当我尝试调用时
我的程序中 a.dll 的 OnStart 方法。我得到“无法加载 dll 或其依赖项之一”。 见代码sn-p
Assembly assm = Assembly.LoadFrom(@"C:\Balaji\Test\a.dll");
foreach (Type tp in assm.GetTypes())
{
if (tp.IsClass)
{
MethodInfo mi = tp.GetMethod("OnStart");
if (mi != null)
{
object obj = Activator.CreateInstance(tp);
mi.Invoke(obj,null);
break;
}
}
}
通常我在“object obj = Activator.CreateInstance(tp);”行上遇到错误这是因为 a.dll 有 xx.dll 的引用,但在我的程序中我没有 xx.dll 的引用。另外,我的程序中不能有 xx.dll 的引用,因为 a.dll 是一个外部程序集,它自己可以有任何引用。
请帮忙!!!
【问题讨论】:
标签: c# reflection dll assemblies reference