1

コンソール アプリケーションから dll のクラスを呼び出そうとしています。dll から呼び出そうとしているすべてのクラスには、パラメーター化されたコンストラクターがあります。ユーザーを渡し、2 つのパラメーターとして、呼び出しようとしているクラスに渡したいと思います。メソッドの呼び出し方法に問題があることはわかっていますが、何が問題なのかわかりません。

誰かが私のコードを修正してもらえますか?

エラーは、「オブジェクト インスタンス = 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();
    }
}

ここでのコンストラクターはダミー コンストラクターです。基本クラスは、user パラメーターと pass パラメーターを受け取ります。

基本クラス -

 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();
    }
}
4

1 に答える 1

7

オブジェクトを作成するのでActivator.CreateInstance()、コンストラクターのパラメーターを指定する必要があります。

object instance = Activator.CreateInstance(type, new object[] {user, pass });
于 2014-04-14T00:37:55.887 に答える