gpt4 book ai didi

.net - 继承,只使用基类的属性而不是派生的属性

转载 作者:行者123 更新时间:2023-12-04 04:58:45 24 4
gpt4 key购买 nike

我的表和数据行具有以下结构:

Public Class MyDataTable(Of MyDataRowDerived)

Public Class MyDataRowBase(Of DataRow)
Public Property MyDescription As String

Public Class MyDataRowDerived(Of MyDataRowBase)
inherits MyDataRowBase
Public overrides Property MyDescription As String

如果我从我的表中创建一行,它的类型是 MyDataRowDerived但我不想在它上面使用被覆盖的属性,而只是在基类中使用普通的属性。并试图以这种方式实现它:
Dim row As MyDataRowBase = CType(myTable.AddNew(), MyDataRowBase)
Dim retrievedDescription = row.MyDescription

我以这种方式强硬,我会强制对象相信它只是基类,但它仍在使用我的 devired 类中的属性。

我的对象返回的描述是在派生类中实现的,但我需要来自基类的描述

也可以在 C# 中添加解决方案,没问题;)

最佳答案

我不认为你可以做你正在寻找的东西。替换基类的功能是覆盖的全部内容。您可以从派生类访问基类成员,但不能从外部类访问。

您可以做的是向派生类添加一个新属性,该属性以不同的名称公开基类功能:

public class MyDataRowBase : DataRow
{
public virtual string MyDescription { get; set; }
}

public class MyDataRowDerived : MyDataRowBase
{
public override string MyDescription { ... }

public string BaseMyDescription
{
get { return base.MyDescription; }
set { base.MyDescription = value; }
}
}

那么你可以使用 BaseMyDescription如果要从外部类访问基本属性的值。

不过,想要做这样的事情是相当不寻常的。如果您提供有关您要完成的工作的更多信息,人们可能会提出一些好的建议。

关于.net - 继承,只使用基类的属性而不是派生的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16412555/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com