MissingMethodException во время Activator.CreateInstance - PullRequest
0 голосов
/ 19 октября 2018

У меня есть класс 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);
}

Всякий раз, когда я создаю новую PackageForm в Main, яget MissingMethodException:

Конструктор типа AppUpdate.Responder не найден.

Есть идеи, почему это происходит?Я полагаю, что нет никаких проблем с синтаксисом, так как есть конструктор для CreateInstance, который принимает объект Type и params [] в качестве параметров.

Примечание. На класс Responder ссылается внешний файл DLL, AppUpdate.dll.

1 Ответ

0 голосов
/ 19 октября 2018

Во-первых, вы полностью уверены, что types содержит только PackageForm?

В любом случае, вы пытаетесь создать PackageForm с параметрами конструктора, когда он имеет только конструктор по умолчанию (без параметров)

Вы, вероятно, хотите вызвать это

resp = (Form)Activator.CreateInstance(types[0]);
...