簡體   English   中英

C#中的對象方法繼承

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM