我正在设置我的新项目,并且想知道如何实现我的ViewModel类确实具有INotifyPropertyChanged支持,而不必亲自手动编码所有属性.
我查看了AOP框架,但我认为他们只会用另一个依赖项炸毁我的项目.
所以我考虑用T4生成属性实现.
设置是这样的:我有一个ViewModel类,它只声明它的Properties背景变量,然后我用T4从它生成Property Implementations.
例如,这将是我的ViewModel:
public partial class ViewModel
{
private string p_SomeProperty;
}
Run Code Online (Sandbox Code Playgroud)
然后T4将遍历源文件并查找名为"p_"的成员声明并生成如下文件:
public partial class ViewModel
{
public string SomeProperty
{
get
{
return p_SomeProperty;
}
set
{
p_SomeProperty= value;
NotifyPropertyChanged("SomeProperty");
}
}
}
Run Code Online (Sandbox Code Playgroud)
这种方法有一些优点,但我不确定它是否真的有效.所以我想在StackOverflow上发布我的想法作为一个问题,以获得一些反馈,也许一些建议如何更好/更容易/更安全.
如何提高PropertyChanged对SomeProperty类B?
此示例无法编译,因为PropertyChanged无法以这种方式访问...
public class A : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
}
public class B : A
{
private object _someProperty;
public object SomeProperty
{
get => _someProperty;
set
{
_someProperty = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(SomeProperty)))
}
}
}
Run Code Online (Sandbox Code Playgroud)