c# - 使用部分类覆盖方法

标签 c# overriding partial-classes

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

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

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

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

最佳答案

不,不可能。如果您是代码生成的所有者,您应该加入钩子(Hook)来处理该场景。例如,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();

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

关于c# - 使用部分类覆盖方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3836098/

相关文章:

jQuery 覆盖 $.post 函数

c# - 成员名称不能与其包含部分类的封闭类型相同

c# - 是否可以向部分类中的属性添加属性?

c# - 高级正则表达式 : Smart auto detect and replace URLs with anchor tags

c# - 如何在 C# 中以编程方式选择 TreeView 的节点?

c# - 只读取文件的前几行文本

c# - 使用 OpenXML 2.5 将数据写入 docx 文档中的 TextInput 元素

javascript - HTML - 覆盖状态栏链接位置显示

objective-c - 类别中重写的方法是否始终优先于原始实现?

c# - 是否可以做静态局部类?