替换c#中的自动生成代码

本文关键字:自动生成 代码 替换 | 更新日期: 2023-09-27 18:08:25

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

我能看到的最简单的方法是修改自动生成的.designer.cs文件本身的代码,但我可以看到这是相当危险的(因为代码可能被代码生成器覆盖)。是否有其他方法可以让我安全地修改代码?

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

替换c#中的自动生成代码

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

如果你真的想修改它们,因为它们是partial类,你可以将它们重新定义为偏函数,或者更好,如果你可以子类化它们。

还有一个选择,你可以探索,是使用Extension Methods,这是一个非常简单的方法来添加功能的类,而不修改它们

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

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

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