C# 如何从基类中的另一个方法调用基虚拟方法而不调用重写?
C VS2010 我的基类中有两个方法。一个是虚拟的,参数列表为空;另一个是重载,它不是虚拟的,但允许传入多个参数 在某些派生类中重写空虚方法,以调用重载的基函数 重载方法foobar传递的值需要调用虚拟方法的基本版本 请问我该怎么做?为了解决这个问题,我将代码从虚方法移到了一个单独的私有方法中,这两个方法都调用它,但我想知道是否需要这样做C# 如何从基类中的另一个方法调用基虚拟方法而不调用重写?,c#,virtual,C#,Virtual,C VS2010 我的基类中有两个方法。一个是虚拟的,参数列表为空;另一个是重载,它不是虚拟的,但允许传入多个参数 在某些派生类中重写空虚方法,以调用重载的基函数 重载方法foobar传递的值需要调用虚拟方法的基本版本 请问我该怎么做?为了解决这个问题,我将代码从虚方法移到了一个单独的私有方法中,这两个方法都调用它,但我想知道是否需要这样做 using KVP = KeyValuePair<string, object>; abstract class BaseRecordClas
using KVP = KeyValuePair<string, object>;
abstract class BaseRecordClass
{
private IEnumerable<KVP> BasePrep()
{
// Serialization can't handle DbNull.Value so change it to null
var result = Data.Select(kvp => new KVP(kvp.Key, kvp.Value == DBNull.Value ? null : kvp.Value)).ToList();
// Add the table name
result.Add(new KVP(TableNameGuid, TableName));
return result;
}
/// <summary>
/// Prepares class for sending/serializing over the web.
/// </summary>
/// <returns></returns>
public virtual IEnumerable<KVP> PrepareForWebInterface()
{
return BasePrep();
}
/// <summary>
/// Override to the above that adds extra items to
/// result eg lists of subrecords
/// </summary>
/// <param name="items"></param>
/// <returns></returns>
protected IEnumerable<KVP> PrepareForWebInterface(params KVP[] items)
{
var result = BasePrep().ToList();
result.AddRange(items);
return result;
}
}// class
class SubRecordClass
{
public override IEnumerable<KVP> PrepareForWebInterface()
{
var parms = new List<KVP>
{
new KVP(CustomGroupsFieldListStr, _customGroupsFieldList.Select(item => item.PrepareForWebInterface()).ToList()),
new KVP(UserGroupsListStr, _userGroupsList.Select(item => item.PrepareForWebInterface()).ToList()),
new KVP(StaffPermissionsStr, _staffPermissions.Select(item => item.PrepareForWebInterface()).ToList())
};
return PrepareForWebInterface(parms.ToArray());
}
}
你的问题不太清楚你想要什么 听起来你想调用一个在子类中被重写的基方法,从同一个类中的继承方法调用,这个方法没有被重写,这有意义吗 如果是这样,我相信您只需要使用base.YourMethod在基类中调用该方法
不过,为了简单和清晰起见,您最好将相关逻辑保留在一个单独的方法中,就像您目前所做的那样。根据你稀疏的描述,我真的看不出有什么不对 请分享代码;它比文本更容易阅读。你肯定有一种代码的味道。这些值是什么意思?对不起,伙计们。请参阅编辑后的文章