1

我以前也问过类似的问题,但我只是很难理解这个问题......

我有一个代表...

delegate void assertDelegate(params object[] args);

我有一个调用委托的方法......

public void assert(assertDelegate assertMethod, params object[] args) {
        string expectedValue;
        string actualValue;
        // derive value of 'expectedValue' and 'actualValue' from 'args'
        assertMethod.DynamicInvoke(expectedValue, actualValue);
    }

我的想法是必须有一种方法来传递动作并动态调用该动作的参数......

assert(Assert.AreEqual,new object[]{ HtmlDiv.PropertyNames.Id, "footer"});

但我得到了错误Expected a method with 'void AreEqual(params object[])' signature

也许我误会了DynamicInvoke

4

1 回答 1

1
delegate void assertDelegate(params object[] args);

此委托签名与 的任何签名都不匹配Assert.AreEqual。改用:

delegate void assertDelegate(string first, string second);

或者一个Func<string, string>.

于 2012-05-22T14:55:16.257 回答