Nunit 使用MvxNotifyPropertyChanged作为实现INotifyPropertyChanged的替代品是否安全?

Nunit 使用MvxNotifyPropertyChanged作为实现INotifyPropertyChanged的替代品是否安全?,nunit,mvvmcross,inotifypropertychanged,Nunit,Mvvmcross,Inotifypropertychanged,为了让PropertyChanged在NUnit测试中触发,我必须设置ShouldAlwaysRaiseInpcOnUserInterfaceThread(false)。当我以后将该类用作ViewModel时,是否对此有任何影响?也许我应该在NUnit中设置一个用户界面线程?救命啊 public interface ISomething : INotifyPropertyChanged { } public class Something : MvxNotifyPropertyChanged,

为了让PropertyChanged在NUnit测试中触发,我必须设置ShouldAlwaysRaiseInpcOnUserInterfaceThread(false)。当我以后将该类用作ViewModel时,是否对此有任何影响?也许我应该在NUnit中设置一个用户界面线程?救命啊

public interface ISomething : INotifyPropertyChanged
{
}

public class Something : MvxNotifyPropertyChanged, ISomething
{
   public Something()
   {
      ShouldAlwaysRaiseInpcOnUserInterfaceThread(false);
   }

   private int _num;
   public int Num
   {
      get { return _num; }
      set { if (_num != value) { _num = value; RaisePropertyChanged(() => Num); }
   }
}

默认情况下,MvvmCross会将
RaisePropertyChanged
之类的调用封送到UI线程上,以方便开发人员

如果要在单个对象上禁用此功能,可以调用
shoulldalwaysraiseinpconuserinterfacethread(false)(这是一个方法调用,而不是一个属性,因为ViewModel对象上的属性通常保留给
INotifyPropertyChanged
使用)

如果希望在所有对象上默认禁用此选项,则可以使用
Mvx.Resolve().AlwaysRaiseInpcOnUserInterfaceThread=false


如果在测试期间,您希望为UI线程编组提供模拟实现,那么请参见例如N=29视频in,其中包含一些
MockDispatcher
代码,默认情况下,MvvmCross将
RaisePropertyChanged
之类的调用编组到UI线程上,以方便开发人员

如果要在单个对象上禁用此功能,可以调用
shoulldalwaysraiseinpconuserinterfacethread(false)(这是一个方法调用,而不是一个属性,因为ViewModel对象上的属性通常保留给
INotifyPropertyChanged
使用)

如果希望在所有对象上默认禁用此选项,则可以使用
Mvx.Resolve().AlwaysRaiseInpcOnUserInterfaceThread=false

如果在测试过程中,您希望为UI线程编组提供模拟实现,那么请参见示例中的N=29视频,其中包含一些
MockDispatcher
代码