在 C# 中,是否将 属性 return 的存储值覆盖到 parent class?
In C#, does an overriden property return the stored value to the parent class?
我有一个订单表格的基页。在这个基页中有一些抽象的属性。它们在 child class 中被覆盖。其中一个 属性 被称为 CompanyName。这是一个字符串。在 child class 中,我添加了从公司名称集合中提取公司名称的代码。由于重写的 属性 获得了一个 CompanyName,parent class 是否可以访问由 child 的 class 版本的方法获得的值?
这是我的 parent class 名为 OrderFormBasePage 的片段:
protected string GetNextInvoiceNumber()
{
using (NewUOCompany db = new NewUOCompany())
{
}
var model = new InvoiceModel();
return model.GetNextInvoiceNumber(CompanyID).ToString();
}
#region Properties
protected int CompanyID { get; }
protected abstract string CompanyName { get; }
protected abstract string OutputFilename { get; }
protected abstract string SourcePDFPath { get; }
#endregion
这是名为 GetEuropeanSubmissionForm 的 child class 的片段:
public partial class GetEuropeanSubmissionForm : OrderFormBasePage
{
#region Properties
protected override string CompanyName
{
get { return Constants.companyNames.EuropeanCompanyName; }
}
protected override string OutputFilename
{
get { return "Submission Form - Europe.pdf"; }
}
protected override string SourcePDFPath
{
get { return "~/pdf/" + OutputFilename; }
}
#endregion
}
基本上,当用户想要下载欧洲表格 pdf 时,他们会被重定向到 GetEuropeanSubmissionForm 页面。后面的代码将提供正确的公司名称和正确的 pdf。但需要修改 pdf 以显示正确的 CompanyName、CompanyID 和发票编号。我知道如何通过硬编码配置文件来做到这一点,但这个解决方案让我只在一个地方而不是在许多地方管理代码。因此,如果我想在 OrderFormBasePage 中编写 CompanyID 检索代码,并且如果我想在数据库中搜索与 GetEuropeanSubmissionForm 中提取的 CompanyName 相对应的 CompanyID,OrderFormBasePage 的 CompanyName 属性 现在是否应该包含由获取欧洲提交表格?我尝试搜索 "C# overriden property returning value to parent class" 但没有找到任何结果。感谢您的任何建议!
是的。
重写的全部意义在于 所有 对该成员的调用,无论它们是通过什么类型进行的,都调用被重写的版本。
是的,当基础 class 访问属性时,它将获得在父 class.
中设置的值
检查这个例子,特别是区域 属性 和它在 Shape.ToString() 方法中的用法。
这就是多态行为的思想,公分母根据其背后的实际实例采取不同的行为形态。
我有一个订单表格的基页。在这个基页中有一些抽象的属性。它们在 child class 中被覆盖。其中一个 属性 被称为 CompanyName。这是一个字符串。在 child class 中,我添加了从公司名称集合中提取公司名称的代码。由于重写的 属性 获得了一个 CompanyName,parent class 是否可以访问由 child 的 class 版本的方法获得的值?
这是我的 parent class 名为 OrderFormBasePage 的片段:
protected string GetNextInvoiceNumber()
{
using (NewUOCompany db = new NewUOCompany())
{
}
var model = new InvoiceModel();
return model.GetNextInvoiceNumber(CompanyID).ToString();
}
#region Properties
protected int CompanyID { get; }
protected abstract string CompanyName { get; }
protected abstract string OutputFilename { get; }
protected abstract string SourcePDFPath { get; }
#endregion
这是名为 GetEuropeanSubmissionForm 的 child class 的片段:
public partial class GetEuropeanSubmissionForm : OrderFormBasePage
{
#region Properties
protected override string CompanyName
{
get { return Constants.companyNames.EuropeanCompanyName; }
}
protected override string OutputFilename
{
get { return "Submission Form - Europe.pdf"; }
}
protected override string SourcePDFPath
{
get { return "~/pdf/" + OutputFilename; }
}
#endregion
}
基本上,当用户想要下载欧洲表格 pdf 时,他们会被重定向到 GetEuropeanSubmissionForm 页面。后面的代码将提供正确的公司名称和正确的 pdf。但需要修改 pdf 以显示正确的 CompanyName、CompanyID 和发票编号。我知道如何通过硬编码配置文件来做到这一点,但这个解决方案让我只在一个地方而不是在许多地方管理代码。因此,如果我想在 OrderFormBasePage 中编写 CompanyID 检索代码,并且如果我想在数据库中搜索与 GetEuropeanSubmissionForm 中提取的 CompanyName 相对应的 CompanyID,OrderFormBasePage 的 CompanyName 属性 现在是否应该包含由获取欧洲提交表格?我尝试搜索 "C# overriden property returning value to parent class" 但没有找到任何结果。感谢您的任何建议!
是的。
重写的全部意义在于 所有 对该成员的调用,无论它们是通过什么类型进行的,都调用被重写的版本。
检查这个例子,特别是区域 属性 和它在 Shape.ToString() 方法中的用法。
这就是多态行为的思想,公分母根据其背后的实际实例采取不同的行为形态。