You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Action<ITask>实现代理类批量执行接口实现类的对应方法

实现方案

1 修正原有代码的签名不匹配问题

原有代码存在接口和实现签名不一致的编译错误:ITask定义的PrintState()是无参方法,但Epic、Story类的实现携带了多余的string参数,先对齐签名:

public interface ITask
{
    void PrintName(string props);
    void PrintState();
}

public class Epic: ITask
{
    public Epic() { }
    public void PrintName(string props)
    {
        Console.WriteLine("Hello Epic: " + props);
    }
    public void PrintState() // 去掉多余参数,和接口对齐
    {
        Console.WriteLine("Epic Started");
    }
}

public class Story: ITask
{
    public Story() { }
    public void PrintName(string props)
    {
        Console.WriteLine("Hello Story: " + props);
    }
    public void PrintState() // 去掉多余参数,和接口对齐
    {
        Console.WriteLine("Story Started");
    }
}

2 实现Action<>泛型通用执行逻辑

核心用Action<ITask>作为通用方法的入参,代表对单个ITask实例要执行的操作,不用硬编码方法名,直接通过委托传递执行逻辑:

public class TaskProxy : ITask
{
    List<ITask> list;
    public TaskProxy (List<ITask> list) 
    { 
        this.list = list;
    }

    public void PrintName(string props)
    {            
        // 传入委托:对单个ITask实例执行PrintName,携带props参数
        Generic(tsk => tsk.PrintName(props));
    }

    public void PrintState()
    {            
        // 传入委托:对单个ITask实例执行PrintState
        Generic(tsk => tsk.PrintState());
    }

    // 通用执行方法,遍历所有实例执行传入的操作
    private void Generic(Action<ITask> methodToExecute)
    {            
        foreach(ITask tsk in list)
        {
            methodToExecute(tsk);
        }
    }
}

3 修正Main方法语法错误

原有Main方法存在缺少new关键字、语句缺分号的问题,修正后:

class Program
{
    static List<ITask> list = new List<ITask>();

    static void Main(string[] args)
    {
        list.Add(new Story());
        list.Add(new Epic());

        ITask task = new TaskProxy(list); // 补new关键字
        task.PrintName("some props"); // 补分号
        task.PrintState(); // 补分号
    }
}

运行输出结果

Hello Story: some props
Hello Epic: some props
Story Started
Epic Started

内容的提问来源于stack exchange,提问作者Dexters

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 11:36:06