6

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

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

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

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

4

1 回答 1

10

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

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();

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

于 2010-10-01T02:19:04.830 回答