C# 4.0 我是否应该公开ISubject<;T>;或可观察到<;T>;和IObserver<;T>;?
我有一个我希望用户能够订阅和推送到的值,所以在我的类内部我使用Subject 当将此值作为属性公开时,我最好将其作为ISubject公开,还是将ISubject拆分为IObserver和IObservable更好 备选案文1:C# 4.0 我是否应该公开ISubject<;T>;或可观察到<;T>;和IObserver<;T>;?,c#-4.0,system.reactive,C# 4.0,System.reactive,我有一个我希望用户能够订阅和推送到的值,所以在我的类内部我使用Subject 当将此值作为属性公开时,我最好将其作为ISubject公开,还是将ISubject拆分为IObserver和IObservable更好 备选案文1: private readonly ISubject<bool> isLightOn = new Subject<bool>(); public ISubject<bool> IsLightOn {
private readonly ISubject<bool> isLightOn = new Subject<bool>();
public ISubject<bool> IsLightOn
{
get
{
return this.isLightOn;
}
}
private readonly issubject isLightOn=new Subject();
公共ISubject IsLightOn
{
得到
{
把这个还给我;
}
}
备选案文2:
private readonly ISubject<bool> isLightOn = new Subject<bool>();
public IObservable<bool> IsLightOnOut
{
get
{
return this.isLightOn.AsObservable();
}
}
public IObserver<bool> IsLightOnIn
{
get
{
return this.isLightOn.AsObserver();
}
}
private readonly issubject isLightOn=new Subject();
公共IObservable IsLightOnOut
{
得到
{
返回此.isLightOn.AsObservable();
}
}
公共IObserver IsLightOnIn
{
得到
{
返回此.isLightOn.AsObserver();
}
}
哪一个更好,为什么?如果选择2,也欢迎对命名约定有任何想法。将两个属性分开会给您带来更大的灵活性(“set”可以写入不同的主题),但更大的问题是:您是否希望此类消费者调用
OnCompleted
或OnError
如果没有,您应该公开一个写入主题的
SetIsLightOn
方法,并将IsLightOnValues
公开为一个IObservable
分隔这两个属性会给您更大的灵活性(“set”可以写入不同的主题),但更大的问题是:您是否希望此类消费者调用OnCompleted
或OnError
如果没有,则应公开写入主题的SetIsLightOn
方法,并将IsLightOnValues
公开为IObservable