mav*_*vnn 19 c# anonymous-function
我有一个"调度图"定义如下:
private Dictionary<string, Func<DynamicEntity, DynamicEntity, IEnumerable<DynamicEntity>, string>> _messageProcessing;
Run Code Online (Sandbox Code Playgroud)
这允许我根据DynamicEntity实例的名称轻松地分派到不同的方法.
为了避免被更多地维护代码的每个人所厌恶,有没有办法在Func中命名参数以给出哪些DynamicEntity是哪个?
Luk*_*keH 27
你不能使用内置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;
Run Code Online (Sandbox Code Playgroud)
Pha*_*raz 18
从C#7开始,您可以通过这种方式使用命名元组实现它:
Func<(string firstName, string lastName), string> f = (data) => data.firstName + data.lastName;
f(("Foo", "Bar"));
Run Code Online (Sandbox Code Playgroud)
您可以创建一个包含"参数"的类并将其提供给func?这样你可以将它们命名为任何你想要的东西.
据我所知,你不能将它们命名为内联.