我目前正在设置我的一个新项目,并且想知道我如何才能实现我的 ViewModel 类确实具有 INotifyPropertyChanged 支持,而不必自己手动编写所有属性。
我研究了 AOP 框架,但我认为它们只会用另一个依赖项破坏我的项目。
所以我考虑使用 T4 生成属性实现。
设置是这样的:我有一个 ViewModel 类,它仅声明其属性背景变量,然后我使用 T4 从中生成属性实现。
例如,这将是我的 ViewModel:
public partial class ViewModel
{
private string p_SomeProperty;
}
然后 T4 将遍历源文件并查找名为“p_”的成员声明并生成如下文件:
public partial class ViewModel
{
public string SomeProperty
{
get
{
return p_SomeProperty;
}
set
{
p_SomeProperty= value;
NotifyPropertyChanged("SomeProperty");
}
}
}
这种方法有一些优点,但我不确定它是否真的有效。所以我想把我的想法作为一个问题发布到 StackOverflow 上,以获得一些反馈,也许还有一些建议可以做得更好/更容易/更安全。
最佳答案
Here's a great post by Colin Eberhardt通过使用 EnvDTE 直接从 Visual Studio 检查自定义属性,从 T4 生成依赖属性。调整它以检查字段并适本地生成代码应该不难,因为该帖子包含用于浏览代码节点的简单实用方法。
请注意,在 VS 中使用 T4 时,您不应在自己的程序集中使用反射,否则它们将被锁定并且您必须重新启动 Visual Studio 才能重建。
关于c# - 通过 T4 代码生成自动 INotifyPropertyChanged 实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2968406/