ジェネリック型の型ごとに最大 1 つのサブスクライバーを登録できるようにする方法はありますか? 例はそれをよりよく説明します:
public interface Message
{
}
public class Command : Message
{
}
public class Event : Message
{
}
public class Bus
{
private readonly IObservable<Message> _stream;
private readonly Subject<Message> _subject;
public Bus()
{
_subject = new Subject<Message>();
_stream = _subject.AsObservable();
}
public IDisposable Subscribe<T>(IObserver<T> observer) where T:Command
{
return _stream.OfType<T>().Subscribe(observer);
}
public void Execute<T>(T command) where T:Command
{
_subject.OnNext(command);
}
}
複数のオブザーバーが同じ種類の Command にサブスクライブできないようにしたいと思います。それを可能にする何かが Rx にありますか、それとも私は次のように制限されていますか?