创建一个热可观察对象并向其添加内容

Creating a hot observable and adding things to it

我正在尝试创建一个热 observable,我可以在其中添加内容。这是基本的大纲 class

public class MyObservable
{
    public IObservable<string> Stream;

    public MyObservable()
    {
         Observable.Create...?
    }

    public void AddString(string eventDescription)
    {
       //Add to Stream
    }
}

在代码的其他地方我希望能够做类似

的事情
var ob = new MyObservable();
MyObservable.Add("User created");

然后在其他地方,例如:

ob.Stream.Subscribe(Console.WriteLine);

我不太确定应该如何将字符串添加到 observable

编辑:我试过做这样的事情,但我不确定我是否没有按照预期的方式做事

    private IObserver<string> _observer;

    public void Add(string e)
    {
        if(Stream == null) 
        { 
            Stream = Observable.Create<string>(
                (IObserver<string> observer) =>
                {
                    _observer = observer;
                    observer.OnNext(e);
                    return Disposable.Empty;
                });
        }
        else
        {
              _observer.OnNext(e);
        } 

    }

你应该多读读 observables and observers

的合同

无论如何,您正在寻找的是 Subject,它实现了 ObservableObserver 接口。

如果你还想包装它,它看起来像这样:

public class MyObservable
{
  private Subject<string> subject; 
  public IObservable<string> Stream 
  { 
    get { return this.subject.AsObservable();

  }

  public MyObservable()
  {
    subject = new Subject<string>();
  }

  public void AddString(string eventDescription)
  {
    //Add to Stream
    this.subject.OnNext(eventDescription);
  }
}