繁体   English   中英

使用分部类重写方法

[英]override a method using a partial class

我有一个由两个部分类组成的类。

一个由ORM代码生成创建,一个用于扩展。

在这个特定的实例中,我需要覆盖由partial类生成的一个属性,因为我需要先对它进行一些验证。

是否可以使用我的扩展类来覆盖代码生成分部类的属性?

不,不可能。 如果您是代码生成的所有者,则应该放置钩子来处理该场景。 例如,LinqToSql的sqlmetal.exe生成部分类,其中每个属性setter看起来有点像这样:

if (this.myProperty != value) 
{
    this.OnMyPropertyChanging(value);
    this.SendPropertyChanging();
    this.myProperty = value;
    this.SendPropertyChanged("MyProperty");
    this.OnMyPropertyChanged();
}

当然,生成器还会创建特定于属性的更改/更改方法,但是它们将这些方法声明为部分:

partial void OnMyPropertyChanging(string newValue);
partial void OnMyPropertyChanged();

通过这种设置,显然很容易为扩展分部类接收这些事件。

暂无
暂无

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

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