如何在不暴露Observer部分的情况下显式公开ReplaySubject或BehaviorSubject的行为?

时间:2013-06-19 15:40:59

标签: c# .net system.reactive

public class Foo
{
    private ReplaySubject<bool> whenBarChanged = new ReplaySubject<bool>();
    public IObservable<bool> WhenBarChanged
    {
        get { return whenBarChanged; }
    }
}

此代码公开了一个IObservable接口,揭示主题行为的唯一方法是通过文档。

您是否知道公开Subject的Observable部分的其他方式是在不暴露Observer部分的情况下工作?

2 个答案:

答案 0 :(得分:2)

您可以使用AsObservable隐藏可观察对象的身份。

public class Foo
{
    private ReplaySubject<bool> whenBarChanged = new ReplaySubject<bool>();
    public IObservable<bool> WhenBarChanged
    {
        get { return whenBarChanged.AsObservable(); }
    }
}

答案 1 :(得分:0)

ReplaySubjectBehaviorSubject都没有任何不属于IObserver<T>IObservable<T>的方法。您希望公开哪些“行为”不在这些接口中?