【发布时间】:2015-02-21 00:09:57
【问题描述】:
所以我有以下内容:
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");
}
}
我需要一种方法来一次调用所有客户端的方法。类似于委托的东西。
基本上我想做以下事情: Clients.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();
}
}
}
但是每当我更改客户端接口时,我也必须更改客户端类。 有没有办法动态生成 Clients 类(或类似的东西)?
如果您需要更好的解释,请告诉我,因为我很难解释这个问题。
【问题讨论】:
-
我明白了。看来您所拥有的一切都很好,并且有一个名称Composite pattern。在修改其他客户端类时,为什么不能花很少的时间在 Clients 类中添加一个方法?
-
一般来说界面保证你的代码不会改变。为了解决这个问题,您可以使用一种方法,将
Func参数与您要调用的方法一起使用,并且您不必在Clients类中实现Client接口 -
@SriramSakthivel 因为我真的很固执,如果我只是花时间在那个类中添加一个方法,我不会学到任何东西。
标签: c# class dynamic interface