我有一个带有此构造函数的Form类:
public partial class PackageForm : Form
{
Responder MfwuResp;
public PackageForm()
{
MfwuResp = new Responder(new Responder.CancelHandler(StopMethod), true);
}
public void StopMethod(Responder responder)
{
Console.WriteLine("Cancel Update");
}
}
我在单独的文件中也有一个Responder类
public class Responder
{
Type[] types;
Object resp;
public Responder(Responder.CancelHandler handler, bool isCancellable)
{
BinaryReader reader = new BinaryReader(Assembly.GetExecutingAssembly().GetManifestResourceStream("Update.Resources.AppUpdate.dll"));
byte[] bytes = reader.ReadBytes((int)reader.BaseStream.Length);
Assembly assm = Assembly.Load(bytes);
types = assm.GetExportedTypes();
resp = Activator.CreateInstance(types[0], new object[] { handler, isCancellable });
}
public delegate void CancelHandler(UtilityResponder responder);
}
每当我在Main中创建一个新的PackageForm时,
我得到一个MissingMethodException
:
找不到类型为'AppUpdate.Responder'的构造函数。
知道为什么会这样吗?我想语法上没有问题,因为存在CreateInstance的构造函数,该构造函数将Type和params object []作为参数。
注意:Responder类是从外部dll文件AppUpdate.dll引用的。
答案 0 :(得分:0)
首先,您是否完全确定types
仅包含PackageForm
?
无论如何,当它仅具有默认构造函数(无参数)时,您尝试使用构造函数参数创建PackageForm
您可能只想打电话给这个人
resp = (Form)Activator.CreateInstance(types[0]);