C#中获取Func<T>请求方法参数

Get Func<T> request method Parameters in C#

我有两个函数有一些共同的功能(即与服务建立连接并在调用后关闭连接)。我在 it.How 中创建了一个名为 "InvokeService" 的方法,参数为 Func 我可以在 InvokeService 中获取请求的参数吗?我的意思是我需要获取请求的对象值?您可以通过我下面给出的演示代码清楚地了解:

public void Method1(){
    InvokeService(()=> _service.getMathod1(request);
 }
 public void Method2(){
    InvokeService(()=> _service.getMathod2(request);
 }
 public void InvokeService(Func<T> request){
     //service open
     //I need here a complete object of the request of Method2 and its parameters
    request.Invoke();
    //service close
 }

如果有任何不明确或不明白的地方,请随时问我。

您可能想要使用 template method 模式:

Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm's structure.

在你的情况下,你可以有这样的东西:

    public abstract class AbstractClass
    {
        protected abstract void PrimitiveOperation();

        public void TemplateMethod()
        {
            // before common functionality

            PrimitiveOperation();

            // after common functionality
        }
    }

    class ConcreteClassA : AbstractClass
    {
        protected override void PrimitiveOperation()
        {
            // your A logic
        }
    }

    class ConcreteClassB : AbstractClass
    {
        protected override void PrimitiveOperation()
        {
            // your B logic
        }
    }

如果你想 return 每个具体 class 不同的东西或者根据具体 class 有不同的参数,你可以用泛型来实现。让我知道是否是这种情况。

可以通过反射解决; request.GetMethodInfo()