C# 如何避免Rx主题中的重复订阅

C# 如何避免Rx主题中的重复订阅,c#,rxjs,system.reactive,reactive,C#,Rxjs,System.reactive,Reactive,我有下面的方法,在这个方法中,各种各样的客户订阅这个主题。我只是想处理这样的情况,有人不小心没有订阅多次。 所以,在订阅之前,我需要检查subject是否已经订阅了同一个客户端,然后什么都不要做。我使用名为Distinct的linq方法进行了检查,但它只返回一个观察者。我认为必须有直接的方法来做到这一点?如果有人知道,请分享 class SettingManger { private Subject<string> suject = new Subject<string&

我有下面的方法,在这个方法中,各种各样的客户订阅这个主题。我只是想处理这样的情况,有人不小心没有订阅多次。 所以,在订阅之前,我需要检查subject是否已经订阅了同一个客户端,然后什么都不要做。我使用名为Distinct的linq方法进行了检查,但它只返回一个观察者。我认为必须有直接的方法来做到这一点?如果有人知道,请分享

class SettingManger
{
   private Subject<string> suject = new Subject<string>();

           public IDisopable SubscribeToChange(IObserver<string>subscriber)
          {
             return subject.subscribe(subscriber);
          }
}
类设置管理器
{
私有主题suject=新主题();
公共IDisobable SubscriberToChange(IObserversubscriber)
{
返回主题。订阅(订户);
}
}

您将订户列表保存在哪里?从你的描述中不清楚。您试图在哪个列表上运行Distinct at?@HananHazani它是system.com的主题。要进行调试,只需在类中添加一个
bool isSubscribed
,并在订阅时将其设置为true。下次调用subscribe时检查它。对于制作,不要这样做。如果观察者尝试订阅多次,您将发送回什么
IDisposable
?您将订阅者列表保存在哪里?从你的描述中不清楚。您试图在哪个列表上运行Distinct at?@HananHazani它是system.com的主题。要进行调试,只需在类中添加一个
bool isSubscribed
,并在订阅时将其设置为true。下次调用subscribe时检查它。对于生产,不要这样做。如果观察者尝试订阅多次,您将返回什么
IDisposable