我有一个这样定义的“调度图”:
private Dictionary<string, Func<DynamicEntity, DynamicEntity, IEnumerable<DynamicEntity>, string>> _messageProcessing;这使我可以根据DynamicEntity实例的名称轻松地分派不同的方法。
为了避免被所有永远维护代码的人讨厌,有没有办法命名Func中的参数,以给出一些线索,哪个DynamicEntity是哪个?
发布于 2011-06-07 16:56:23
你不能用内置的Func类型做到这一点,但是创建你自己的自定义委托类型并以类似的方式使用它已经很容易了:
_messageProcessing.Add("input", (x, y, z) => "output");
_messageProcessing.Add("another", (x, y, z) => "example");
// ...
delegate string DispatchFunc(DynamicEntity first, DynamicEntity second,
IEnumerable<DynamicEntity> collection);
Dictionary<string, DispatchFunc> _messageProcessing;发布于 2018-02-01 12:43:39
在C# 7中,您可以通过以下方式使用命名元组来实现它:
Func<(string firstName, string lastName), string> f = (data) => data.firstName + data.lastName;
f(("Foo", "Bar"));发布于 2011-06-07 16:46:38
你可以创建一个包含你的‘参数’的类,并将它提供给函数?这样你就可以给它们起任何你想要的名字了。
据我所知,你不能在行内给它们命名。
https://stackoverflow.com/questions/6262646
复制相似问题