使用 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());
}
我正在创建一个通用操作来调用给定通用 <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());
}