As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center提供指导。




已关闭8年。




MVVM涉及大量编写样板代码,如多篇文章所述。许多快捷方式似乎可以提供运行时评估,但是我想知道是否有一个免费的实用程序,该实用程序使用反射来生成C#代码,即:
Class A
{
   int I {get;set;}
   ICollection C {get; set;}
}

会给我一个包含类似内容的文件或剪贴板
Class ViewModelA : INotifyPropertyChanged
{
   readonly A _a;
   private ObservableCollection _c;
   ViewModelA(ClassA a)
   {
      _a=a;
      _c=new ObservableCollection(a.C);
   }
   int I
   {
      get {return _a.I;}
      set
      {
         (if _a.I != value)
         {
           _a.I = value;
           NotifyPropertyChanged("I");
         }
      }
   }
}

谢谢

最佳答案

PropertyChanged.Fody是我用来处理此问题的方法。

它已经可以识别大多数MVVM框架中的基类,并调用适当的方法进行通知。否则,它将找到实现INPC的任何类并为您进行转换。

我之所以选择Fody而不是PostSharp,是因为Fody将IL添加到您的程序集中,然后对其进行清理,因此您不依赖Fody或任何其他程序集,并且代码是独立的。 PostSharp只会添加拦截器,然后将其调出到PostSharp库中,然后再返回到您添加的任何拦截器中。这在运行时速度较慢,并且您需要依赖于PostSharp库。

Plus Fody是免费和开源的。

关于c# - 自动生成可编译的C#-实现INotifyPropertyChanged的包装器类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14514571/

10-11 07:29