可观察的类属性不会触发订阅

时间:2020-04-29 19:41:43

标签: c# .net-core rx.net

简单的可观察变量按预期工作,立即在同一线程上触发触发器回调。 为什么任何可观察类型的类变量(Subject,ISubject,Observable,IObservable)都不会触发回调?

带有简单变量的示例-[Works]

didSet

课程示例-[无效]

var x1 = new Subject<string>();
var x2 = x1.DistinctUntilChanged();

x2.Subscribe(o =>
{
  // Triggered as expected
});

x1.OnNext("Hello");

1 个答案:

答案 0 :(得分:2)

问题是您让Demo每次使用时都返回Subject<string>的新实例。

您订阅的

Demo实例与您在OnNext()上调用的实例也不相同。

class1.Demo.Subscribe(...); // makes new instance `Subject<string>`

class1.Demo.OnNext("Hello"); // makes another new instance of `Subject<string>`

将其保留在相同的实例中,它将起作用。例如:

public class InstrumentModel
{
  public Subject<string> Demo = new Subject<string>();
}

或:

public class InstrumentModel
{
    public InstrumentModel()
    {
        this.Demo = new Subject<string>();
    }
    public Subject<string> Demo { get; }
}
相关问题