如何解决使用 Action<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());
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。