C# - 带linq参数的通用方法

时间:2016-01-26 16:20:39

标签: c# .net linq generics

我想创造这样的东西:

Class.Method<OtherClass>(x => new Dictionary<string, string> { { nameof(x.Property), "Hello World!" } });

我希望方法无效,但不知怎的,我无法完成这项工作。我知道这个签名是

public static void Method<T>(Func<T, Dictionary<string, string>> func)

但我不想使用字典az a TResult。我想要的只是将字典作为输入并填充T类型的键。这有可能吗?

2 个答案:

答案 0 :(得分:1)

从我可以收集的内容中,您尝试提供一个填充现有字典的键的函数。如果是这样的话,你可以这样做:

public static void Method<T>(Action<T, IDictionary<string, string>> mergeAction);

可以这样调用:

MyClass.Method<OtherClass>((input, dict) => { dict[nameof(input.Property)] = "hello world"; });

答案 1 :(得分:0)

其中Func<T, TResult>应返回void的TResult必须声明为Action<T>