Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 筛选事件并通知指定订阅者_C#_Single Responsibility Principle - Fatal编程技术网

C# 筛选事件并通知指定订阅者

C# 筛选事件并通知指定订阅者,c#,single-responsibility-principle,C#,Single Responsibility Principle,我是TDD新手,我正在尝试将单一责任原则应用于API 我使用的API在一个事件中返回多个提要订阅。每个订阅都可以区别于其他订阅,因为事件处理程序包含一个id字段。我想做的是为API做一个包装器,它可以管理订阅更新,这样一个订阅类只接收由API触发的事件的id字段确定的与其相关的事件更新 现在我实现了Subscribe()方法的API包装器,它返回一个Subscription类,其中包含一个Subscription.Updated()事件。我将订阅的记录保存在字典中,以便根据订阅的id通知每个订阅

我是TDD新手,我正在尝试将单一责任原则应用于API

我使用的API在一个事件中返回多个提要订阅。每个订阅都可以区别于其他订阅,因为事件处理程序包含一个id字段。我想做的是为API做一个包装器,它可以管理订阅更新,这样一个订阅类只接收由API触发的事件的id字段确定的与其相关的事件更新

现在我实现了Subscribe()方法的API包装器,它返回一个Subscription类,其中包含一个Subscription.Updated()事件。我将订阅的记录保存在字典中,以便根据订阅的id通知每个订阅

我的问题是如何将订阅更新的事件参数从API传递到特定的订阅,并引发Subscription.Updated()事件?我读到过我可以创建一个公共的OnUpdate方法(我在以前的项目中做过),但他们说这破坏了封装和SRP

还是我处理得不对?有没有更优雅的方法

其他信息:

从API请求提要:
void Feed.Subscribe(id,SubscriptionParamaters)

其中id将用于标识哪个响应属于哪个订阅

您可以通过

Feed.Update(id,UpdateValueArgs)

如果您在一个事件中订阅了多个Feed,这本身不是违反了单一责任吗?每个不同的事件都可能是更改类的原因,而不是更改类的单一原因。不是我,而是API。这就是为什么我试图创建一个类来管理订阅并通知适当的对象。为了更清楚,下面是API的使用方法。让我们调用api提要<代码>1。Feed.Connect()//在API和程序之间建立连接。订阅(id,SubscriptionParamaters)请求一个提要一旦您这样做,API将返回一个事件的任何提要更新,您需要订阅该事件以获取传入数据。事件具有签名
Feed.Updates(id,UpdateValueArgs)