如何传递具有可变数量参数的 Func<T>

所以我试图能够传递一个带有可变数量参数的 Func 。


就像是:


public object GetValue<T>(string name, Func<object> func) { 

    var result = func.DynamicInvoke();

}

当 func 的参数数量已知时,上述函数/签名效果很好。但是当您希望参数的数量在运行时之前未知时,它很快就会崩溃。


我想更改方法签名以允许以下场景,而不使用方法重载:


// No arguments

var result = GetValue("Bob", () => { return "Bob Smith"; });


// 1 argument

var result = GetValue("Joe", (i) => { return "Joe " + i.ToString(); });


// 2 arguments

var result = GetValue("Henry", (i,e) => { 

    return $"i: {i.ToString()}, e: {e.ToString()}"; 

});

现在不需要超过 2 个参数......但可能在未来。调用语法对我来说是最重要的一点。我宁愿不让来电者投射任何东西。


我已经查看了这个问题和答案,但它们似乎都需要一些我不想使用的调用语法。


任何想法如何实现?


桃花长相依
浏览 191回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP