通过单个调用调用接口集合的调用方法
本文关键字:调用 方法 集合 接口 单个 | 更新日期: 2023-09-27 18:34:56
所以我有以下内容:
public interface Client
{
void Operation1();
void Operation2();
}
public class Client1 : Client
{
public void Operation1()
{
Console.WriteLine("Client1 - Operation1");
}
public void Operation2()
{
Console.WriteLine("Client1 - Operation2");
}
}
public class Client2 : Client
{
public void Operation1()
{
Console.WriteLine("Client2 - Operation1");
}
public void Operation2()
{
Console.WriteLine("Client2 - Operation2");
}
}
public class Client3 : Client
{
public void Operation1()
{
Console.WriteLine("Client3 - Operation1");
}
public void Operation2()
{
Console.WriteLine("Client3 - Operation2");
}
}
我需要一种方法来通过一次调用调用所有客户端的方法。类似于代表。
基本上我想做以下几点: 客户端操作1((哪些输出: 客户端 1 - 操作 1 客户端 2 - 操作 1 客户端3 - 操作1
实现此目的的一种方法是具有以下类:
public class Clients : Client
{
public List<Client> Clients { get; set; }
public void Operation1()
{
foreach(Client c in Clients)
{
c.Operation1();
}
}
public void Operation2()
{
foreach (Client c in Clients)
{
c.Operation2();
}
}
}
但是每当我更改客户端接口时,我还必须更改客户端类。有没有办法动态生成客户端类(或类似的东西(?
如果您需要更好的解释,请告诉我,因为我真的很难解释这个问题。
您可以简单地实现一个方法Execute
并将要执行的方法传递给它:
public class Clients
{
public List<Client> ClientList { get; set; }
public void Execute(Action<Client> action)
{
ClientList.ForEach(action);
}
}
用法:
new Clients().Execute(x => x.Operation1(someString, someInt));
new Clients().Execute(x => x.Operation2());
使用此示例,您不必在 Clients
类中实现接口,也不必在每次接口更改时重新制作它。