c# - 您如何检查传递给委托(delegate)的参数?

标签 c# delegates

我正在尝试创建一个类来使用我自己的方式处理远程服务器上的调用方法。为了让客户端调用者更轻松,我正在编写一个接受接口(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/

相关文章:

c# - 在最小起订量中提高委托(delegate)事件

ios - 在 Swift 中覆盖父类(super class)委托(delegate)

iphone - 竞争条件与否?委托(delegate)和多线程

ios - 委托(delegate)在操作期间释放

c# - 使用不同的浏览器检测服务器是否仍然有ajax请求C#jquery

c# - BinaryFormatter.Deserialize 如何创建新对象?

c# - 当调用程序集是 .NET Framework 4.7.2 时,.NET Standard 库将目标预处理器设置为 NETSTANDARD2_0?

iphone - 使用 AppDelegate 共享数据

C#:使用位图时如何减少内存和 CPU 消耗?

c# - 使用 [EventGridTrigger] EventGridEvent 作为参数时,Azure Function .NET5(隔离)抛出