用C#替换自动生成的代码

时间:2014-06-13 12:59:15

标签: c# .net wpf

我目前正在开发一个使用Linq-to-SQL类的非常基本的应用程序。我一直在为自动生成的数据类添加新方法和属性,方法是利用它们是“部分”的事实。"但是,现在我想实际修改一个类方法中包含的代码 - 即SendPropertyChanged()。

我能看到的最简单的方法是修改自动生成的.designer.cs文件中的代码,但我可以看到这是多么危险(因为代码生成器可能会覆盖代码) 。有没有其他方法可以安全地修改代码?

编辑:为什么我要这样做:我想添加一个属性" isDirty"每当更改任何字段时设置。因为无论何时更改字段,它都会调用SendPropertyChanged方法,我想我只会坚持" isDirty = true"在那里(进行适当的检查)。

2 个答案:

答案 0 :(得分:0)

不建议更改自动生成的文件,因为很明显的原因是每次更改内容并且IDE生成它们时都会替换它们。

如果你真的想要修改它们,并且因为它们是partial类,你可以将它们重新定义为部分或更好,如果你可以将它们子类化。

您可以使用Extension Methods进行另外一个选项,这是一种非常简单的方法,可以在不修改类的情况下向类添加功能

答案 1 :(得分:0)

这里的想法是您将代码添加到On*ChangingOn*Changed方法中,例如:

partial void OnNameChanged() {
    // my code here
}

也可以订阅PropertyChanging / PropertyChanged,但这通常是不好的做法(订阅你自己的事件),并且会产生性能开销。