我有一個User
模型,它具有IObservable<int>
屬性。該屬性由一個BehaviorSubject
支持,該值用特定值初始化。如何獲得可觀察值的當前值,而無需公開訪問底層BehaviorSubject
上.Value
屬性的另一個屬性?如何獲得作爲IObservable公開的主題的當前值?
這是樣品模型來考慮:
class User
{
private readonly BehaviorSubject<int> mySubject;
public User()
{
mySubject = new BehaviorSubject<int>(100);
}
public IObservable<int> Value => mySubject.DistinctUntilChanged();
public void SomeMethod(int level)
{
mySubject.OnNext(level);
}
}
請注意,我有一個具有指定值對象調用OnNext
的方法。這對我來說已經很奇怪了,如果我可以將Value
作爲get和set屬性來對待會更好,但是唉...
在我的代碼的另一部分,我需要命令性地獲取當前值一個給定的用戶,我似乎無法找到直接從IObservable
界面執行此操作的方法。我嘗試使用Latest
和MostRecent
方法,但他們似乎做了不同於我所期望的事情。當同時嘗試時,我的應用程序將無限期阻止。
我找到正確曝光值的唯一方法是創建另一個屬性爲「當前」值,就像這樣:
public int CurrentValue => mySubject.Value;
我不喜歡這個,因爲感覺對我來說,我m是多餘的。有沒有更好的方法來公開observable的當前值,以便外部代碼可以獲得該值並按照它的要求執行操作?就此而言,正如我之前評論的那樣,我也不是很高興有另一種方法來改變價值。在我看來,它使得對象的界面變得麻煩。例如,在knockoutjs中,我可以通過「調用」observable來獲取和設置值,這看起來更簡單。在這種情況下,這將相當於Value()
。