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

阿尔文奎松

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

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

使用我在基类中创建的这个通用方法调用

public abstract class ServiceBase
{
    protected internal void ExecuteService<T>(Action<T> action)
    {
        // execute here
        action.Invoke() // here is my problem
    }
}

在其他继承类中执行:

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

我想TestService1从使用ExecuteService.
我如何实现这一目标?

无锡

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

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());
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章