繁体   English   中英

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

[英]Replacing Auto-Generated Code in C#

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

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

编辑:为什么我想这样做:我想添加一个属性“ isDirty”,该属性在任何字段更改时都设置。 由于每当字段更改时,它都会调用SendPropertyChanged方法,因此我想我只是在其中粘贴“ isDirty = true”(进行适当的检查)。

不建议更改自动生成的文件,因为显而易见的原因是,每次更改并由IDE生成文件时,它们都会被替换。

如果您确实要修改它们,并且由于它们是partial类,则可以将它们重新定义为partial或更好的子类(如果可以对其进行子类化)。

您可以探索另一种选择,即使用Extension Methods ,这是一种在不修改功能的情况下向类添加功能的简便方法

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM