问题描述
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());
}