|
0
|
| Konstantin Konstantinov · 技术社区 · 8 年前 |
|
|
1
1
基本上,您需要做的是将参数声明为
这取决于作为参数的方法的签名。 如果某个方法看起来像:
然后
如果要接受签名稍有不同的方法(但是如果要接受参数数目不同的方法,则必须使用重载,而且在这种情况下,C编译器可能不会自动解析泛型类型参数,你必须明确地指定它们)
我想这个问题实际上是,如何从表达式树中将方法名作为字符串获取? 有两种不同的方法可以做到这一点,这取决于您希望代码有多健壮。考虑到上面的方法签名允许传递比单个方法调用复杂得多的委托。例如:
如果您搜索从上面生成的表达式树,您将发现很多方法调用,而不仅仅是一个。如果您只是想强制传递的参数是单个方法调用,那么只需尝试抛出表达式就更容易了。
另一种选择是使用visitor模式,这非常有用,特别是当您有一个更复杂的场景时,例如您希望检索所有方法名的列表,例如有多个方法名,或者支持属性或方法调用的混合等。
对于此选项,创建一个继承
你可以这样称呼它:
最后,要调用它,您将无法使用缩短的“方法组”调用模式
所以你不能:
相反,它必须看起来像lambda表达式:
或者如果没有参数:
|
|
|
2
2
你可以用
在上例中
样本输出
|
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |