c# – 通过T4代码生成自动INotifyPropertyChanged实现?

我目前正在设计一个我的新项目,并且想知道如何实现我的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生成依赖关系属性.因为post包含浏览代码节点的简单实用程序方法,所以不应该很难适应它来检查字段并适当地生成代码.

请注意,当使用VS的T4时,您不应该在自己的程序集上使用Reflection,否则它们将被锁定,您必须重新启动Visual Studio才能重建.

相关文章

文章浏览阅读6.2k次,点赞2次,收藏3次。C#数学运算表达式解...
文章浏览阅读5.2k次,点赞6次,收藏7次。程序要做到用户配置...
文章浏览阅读9k次。错误信息检测到 ContextSwitchDeadlock M...
文章浏览阅读2w次,点赞10次,收藏9次。我发生错误时的环境:...
文章浏览阅读9.8k次。C# 二进制字节流查找函数IndexOf ...
文章浏览阅读2.5w次,点赞3次,收藏9次。c#DataGridView数据...