我正在尝试创建一个类来使用我自己的方式处理远程服务器上的调用方法。为了让客户端调用者更轻松,我正在编写一个接受接口(interface)的通用类,以便编译器知道参数的数量和方法的返回类型。
public class Service<TInterface>
{
public TResult Invoke<TResult>(Func<TInterface, TResult> function)
{
// Do the work
}
}
所以想法是他们可以引用具有接口(interface)的程序集,例如:
public interface ICalculator
{
int Add(int num1, int num2);
}
然后他们可以像这样编写代码来访问服务:
var addend = new Service<ICalculator>(/* constructor */).Invoke(s => s.Add(3, 4));
问题是在第一个代码块中,我需要知道如何找出他们在他们的 lamda 表达式中传递的参数。我该怎么做?
最佳答案
最简单的方法是使用 Expression<Func<TInterface,TResult>
反而;这很容易分开。其实你可以直接解除我的代码from here涵盖了大多数场景。特别是看 ResolveMethod
.对此的一些讨论/解释是 here .
关于c# - 您如何检查传递给委托(delegate)的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3387325/