所以说我有以下课程:
public class User
{
public IObservable<IEvent> Events { get; }
public User(Guid id, string username, string password) => Events = Observable.Return(new UserCreated(id, username, password));
public void ChangeUsername(string username)
{
// TODO: Append a ChangeUsername event to the sequence of events
}
}
如何将ChangeUsername(实现IEvent)附加到我的事件序列中?并且还会通知我的订户已发生ChangeUsername事件。
答案 0 :(得分:0)
你拥有它的方式,你不能。 Events
绑定到Observable.Return
的结果,它返回一个值然后完成。没有更多的价值观
最简单的入门方式可能是使用Subject
:
public class User
{
private readonly Subject<IEvent> _subject = new Subject<IEvent>();
public IObservable<IEvent> Events => _subject;
public User(Guid id, string username, string password) => _subject.OnNext(new UserCreated(id, username, password));
public void ChangeUsername(string username)
{
_subject.OnNext(new ChangeUserName(username));
}
}
public interface IEvent
{}
public class ChangeUserName : IEvent
{
public ChangeUserName(string userName) {}
}
public class UserCreated : IEvent
{
public UserCreated(Guid id, string userName, string password){}
}