Reactive Extensions IObservable在订阅者订阅时通知

Doa*_*air 2 .net system.reactive

我有一个Subject<T>,我希望在订阅它时得到通知.我找不到这个机制.我错过了什么吗?

例如:

    public class AccountManager
    {
        private ReplaySubject<string> _accountEvents = new ReplaySubject<string>();

        public AccountManager()
        {
        }

        public void Add(string val)
        {
            _accountEvents.OnNext(val);
        }

        public IObservable<string> AccountEvents { get { return _accountEvents.AsObservable<string>(); } }

    }
Run Code Online (Sandbox Code Playgroud)

可以AccountManager在任何其他代码调用通知SubscribeAccountEvents属性.

Ser*_*hov 5

这个

        var subj = new Subject<string>();
        var o = Observable.CreateWithDisposable<string>(observer =>
                                            {
                                                Console.WriteLine("subscribed");
                                                return subj.Subscribe(observer);
                                            });
Run Code Online (Sandbox Code Playgroud)

或(类似斯科特的回答)

        var o = Observable.Defer(() =>
                                     {
                                         Console.WriteLine("subscribed");
                                         return subj;
                                     });
Run Code Online (Sandbox Code Playgroud)

在第一种情况下,你有更多的自由,因为你有一个观察者作为参数传入,所以除了将主题输出路由到观察者,你可以在你的逻辑需要时调用observer.OnNext,OnError,OnComplete.