我正在尝试创建一个热的observable,我可以在其中添加内容。这是基本类的概述
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);
我不确定我应该如何向可观察的
添加字符串编辑:我尝试过做这样的事情,但我不确定我是不是按照它应该做的方式做事
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);
}
}
答案 0 :(得分:3)
您应该多阅读observables and observers
的合同无论如何,您正在寻找的是Subject
,它实现了Observable
和Observer
接口。
如果你还想包装它,它会是这样的:
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);
}
}