传递委托方法并动态调用参数

时间:2012-05-22 14:53:11

标签: c# delegates

之前我曾问过类似的问题,但我只是很难绕过这个问题......

我有代表......

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

1 个答案:

答案 0 :(得分:1)

delegate void assertDelegate(params object[] args);

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

delegate void assertDelegate(string first, string second);

Func<string, string>