0

所以说我有以下课程:

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 事件。

4

1 回答 1

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){}
}
于 2018-03-05T15:45:49.643 回答