![](/img/trans.png)
[英]System.MissingMethodException: No parameterless constructor defined for this object
[英]MissingMethodException: no parameterless constructor defined for this object
我正在尝试从控制台应用程序调用dll类。 我试图从dll调用的所有类都有参数化的构造函数。 我希望将user并作为两个参数传递给我尝试调用的任何类。 我知道我如何调用方法有问题,但无法弄清楚是什么。
有人可以更正我的代码吗?
该行中发生错误-“对象实例= 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();
}
}
当Activator.CreateInstance()
创建对象时,需要在此提供构造函数参数:
object instance = Activator.CreateInstance(type, new object[] {user, pass });
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.