[英]Replacing Auto-Generated Code in C#
我目前正在开发一个使用Linq-to-SQL类的非常基本的应用程序。 我一直在利用自动生成的数据类“部分”这一事实,向它们中添加新的方法和属性。 但是,现在我想实际修改类方法之一中包含的代码-即SendPropertyChanged()。
我看到的最简单的方法是修改自动生成的.designer.cs文件本身中的代码,但是我可以看到这是多么危险(因为代码可能会被代码生成器覆盖)。 我是否可以通过其他方法安全地修改代码?
编辑:为什么我想这样做:我想添加一个属性“ isDirty”,该属性在任何字段更改时都设置。 由于每当字段更改时,它都会调用SendPropertyChanged方法,因此我想我只是在其中粘贴“ isDirty = true”(进行适当的检查)。
不建议更改自动生成的文件,因为显而易见的原因是,每次更改并由IDE生成文件时,它们都会被替换。
如果您确实要修改它们,并且由于它们是partial
类,则可以将它们重新定义为partial
或更好的子类(如果可以对其进行子类化)。
您可以探索另一种选择,即使用Extension Methods
,这是一种在不修改功能的情况下向类添加功能的简便方法
这里的想法是将代码添加到On*Changing
和On*Changed
方法中,例如:
partial void OnNameChanged() {
// my code here
}
您也可以订阅PropertyChanging
/ PropertyChanged
,但这通常是不好的做法(订阅您自己的事件),并且会产生性能开销。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.