[英]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.