1

わかりました、これには最初に少しセットアップが必要です。

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);

痛いほど明白な何かが欠けていると確信していますが、私の脳は現在機能していません. 私は何が欠けていますか?

4

1 に答える 1

1

私はこの解釈をまとめましたが、うまくいきました:

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);
    }
}
于 2012-11-15T16:09:37.607 に答える