MissingMethodException:未为此对象定义无参数构造函数

本文关键字:定义 参数 构造函数 对象 MissingMethodException | 更新日期: 2023-09-27 17:58:13

我正试图从控制台应用程序调用dll的一个类。我试图从dll调用的所有类都有参数化的构造函数。我希望将user和pass作为两个参数传递给我试图调用的任何类。我知道我调用这些方法的方式有问题,但无法弄清楚是什么。

有人能纠正我的代码吗?

错误出现在"object instance=Activator.CreateInstance(type)"行

控制台应用程序-

class Program
{
    static void Main(string[] args)
    {
        string test_method = args[2];
        string user = args[0];
        string pass = args[1];
        Assembly myassembly = Assembly.LoadFrom("Tests.dll");
        Type type = myassembly.GetType("Tests." + test_method);
        object instance = Activator.CreateInstance(type);
        MethodInfo[] methods = type.GetMethods();
        methods[0].Invoke(instance, new object[] {user, pass });
        Console.WriteLine("'n"+test_method + " has passed.");
    }
}

一个被称为-的示例类

public class Test_3456 : ePO
{
    public Test_3456(string a, string b) : base (a, b)
    {
        MultipleWebclipsSameNameDifferentUrl_3456();
    }
    [TestMethod]
    public void MultipleWebclipsSameNameDifferentUrl_3456()
    {
        PolicyCatalog.GoTo();
        PolicyCatalog.PolCatSelect("iOS (User-Based Policy)");
        WebClip.iOSWebClipsTab();
        WebClip.Add2WebClipsSameNameDifferentUrl();
        WebClip.Ok();
        WebClip.Save();
    }
}

这里的构造函数是一个伪构造函数。基类接收用户并传递参数。

基本类-

 public class ePO
{
    public ePO(string a, string b)
    {
        Init(a, b);
    }
    [TestInitialize]
    public void Init(string username, string password)
    {
        Driver.initialize();
        Login.GoTo();
        Login.LoginAs(username).WithPassword(password).Login();
    }
}

MissingMethodException:未为此对象定义无参数构造函数

Activator.CreateInstance()创建对象时,您需要在其中给定构造函数参数:

object instance = Activator.CreateInstance(type, new object[] {user, pass });