使用 Action<T> 调用通用方法

Invoke Generic Method using Action<T>

我正在创建一个通用操作来调用给定通用 <T> 的方法。

public class TestService
{
    public void TestService1()
    {
        // DO SOMETHING
    }
}

使用我在 base class

中创建的通用方法调用
public abstract class ServiceBase
{
    protected internal void ExecuteService<T>(Action<T> action)
    {
        // execute here
        action.Invoke() // here is my problem
    }
}

在其他继承中执行class:

public void TestVoid()
{
    ExecuteService<TestService>(x => x.TestService1());
}

我想使用 ExecuteService.
执行调用 TestService1 方法 我该如何实现?

如果问题是在您的操作中提供新实例,您可以简单地这样做:

using System;

class Program : ServiceBase
{
    static void Main()
    {
        var program = new Program();

        program.ExecuteService<TestService>(x => x.TestService1());
    }
}

public class TestService
{
    public void TestService1() 
        => Console.WriteLine($"{nameof(TestService)}.{nameof(TestService1)}();");
}

public abstract class ServiceBase
{
    protected internal void ExecuteService<T>(Action<T> action) where T : new() 
        => action?.Invoke(new T());
}