[英]Object Method Inheritance in C#
好的,这首先需要一些设置。
public interface IPolicyObjectAdapter
{
PolicyImage GetPolicyImage(BridgePolicy policy);
}
public class BridgePolicyAdapter : IPolicyObjectAdapter
{
protected virtual PolicyImage GetPolicyImage(BridgePolicy policy)
{
AddPolicyInformation(policy);
}
protected virtual void AddPolicyInformation(BridgePolicy policy)
{
//does stuff
}
}
public class HSPolicyAdapter : BridgePolicyAdapter, IPolicyObjectAdapter
{
protected override void AddPolicyInformation(BridgePolicy policy)
{
base.AddPolicyInformation(policy);
//does more stuff
}
}
当我执行以下代码时,我希望代码可以输入到HSPolicyAdapter的AddPolicyInformation方法中。 但是它从来没有。 它只是直接进入BridgePolicyAdapters AddPolicyInformation方法。
IPolicyObjectAdapter Adapter = null;
Adapter = new HSPolicyAdapter();
PolicyImage image = Adapter.GetPolicyImage(policy);
我确定我缺少明显的东西会伤害到我,但是我的大脑现在无法正常工作。 我想念什么?
我整理了这种解释,对我来说很好用:
public class BridgePolicy
{
public string Name { get; set; }
}
public class PolicyImage
{
public string Name { get; set; }
}
public interface IPolicyObjectAdapter
{
PolicyImage GetPolicyImage(BridgePolicy policy);
}
public class BridgePolicyAdapter : IPolicyObjectAdapter
{
protected virtual void AddPolicyInformation(BridgePolicy policy)
{
//does stuff
}
public virtual PolicyImage GetPolicyImage(BridgePolicy policy)
{
AddPolicyInformation(policy);
return null;
}
}
public class HSPolicyAdapter : BridgePolicyAdapter, IPolicyObjectAdapter
{
protected override void AddPolicyInformation(BridgePolicy policy)
{
base.AddPolicyInformation(policy);
//does more stuff
}
}
class Program
{
static void Main(string[] args)
{
BridgePolicy p = new BridgePolicy();
IPolicyObjectAdapter Adapter = null;
Adapter = new HSPolicyAdapter();
PolicyImage image = Adapter.GetPolicyImage(p);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.