gpt4 book ai didi

c# - 通过一次调用调用一组接口(interface)的方法

转载 作者:行者123 更新时间:2023-11-30 14:54:16 25 4
gpt4 key购买 nike

所以我有以下内容:

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");
}
}

我需要一种方法来通过一次调用调用所有客户端的方法。有点像代表。

基本上我想做以下事情: 客户.Operation1()哪些输出: 客户 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();
}
}
}

但是每当我更改 Client 接口(interface)时,我也必须更改 Clients 类。有什么方法可以动态生成 Clients 类(或类似的东西)吗?

如果您需要更好的解释,请告诉我,因为我真的很难解释这个问题。

最佳答案

您可以简单地实现一个方法 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 类中实现接口(interface),也不必在每次接口(interface)更改时重新掌握它。

关于c# - 通过一次调用调用一组接口(interface)的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27610390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com