抽象オーバーライドとして宣言されている基本メソッドを呼び出す方法

オラクル

C#では、仮想メソッドの抽象化をマークして、継承されたクラスに実装を強制することができます。

class A
{
    public virtual void Method()
    {
        Console.WriteLine("A method call");
    }
}

abstract class B : A
{
    // Class inherited from B are forced to implement Method.
    public abstract override void Method();
}

から継承されたクラスからA実装を呼び出したいと思います。MethodB

class C : B
{
    public override void Method()
    {
        // I would like to call A implementation of Method like this:
        // base.base.Method();
    }
}

これを行うための最善の方法は、保護されたメソッド「MethodCore」を実装に追加し、必要に応じて呼び出すことです。

class A
{
    public virtual void Method()
    {
        MethodCore();
    }

    protected void MethodCore()
    {
        Console.WriteLine("A method call");
    }
}

abstract class B : A
{
    public abstract override void Method();
}

class C : B
{
    public override void Method()
    {
        MethodCore();
    }
}

これを行う他の方法はありますか?

CKing

これを行うための最善の方法は、保護されたメソッド「MethodCore」を実装に追加し、必要に応じて呼び出すことです。

はい。あなたが呼び出すことができませんので、abstract使用方法をbase、すべての可能な解決策は最終的に呼び出すためにあなたを必要としているMethod中でA使用してAインスタンスを。

それはあなたが提供する方法を探しているように見える、とデフォルトの実装をMethodしてB、任意のサブクラスようなB方法は、単純に実装存在を使用する必要があります実装されていませんAよりよい解決策をマークしないことであろうMethodabstractの中でB代わりに、使用するMethod際にBリダイレクトMethodAてくださいbase.Method()

abstract class B : A {
// Class inherited from B are forced to implement Method.
   public virtual void Method() { 
        base.Method()//calls Method in A
   }
}

このように、任意のサブクラスBそれは、呼び出したいMethodからA単に言うことができますbase.Method()

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

オーバーライドされていない基本クラスメソッドを呼び出すようにMoqを取得します

分類Dev

Revealing PrototypePatternを使用してオーバーライドされたメソッドを内部的に呼び出す方法

分類Dev

Androidで呼び出されていないメソッドをオーバーライドする

分類Dev

メソッドをオーバーライドして基本型にキャストした後、どのメソッドが呼び出されますか?

分類Dev

「スーパー」を使用してオーバーライドするメソッドでオーバーライドされたメソッドを呼び出していますか?

分類Dev

UITableViewは、呼び出されていないいくつかのオーバーライドされたメソッドをサブクラス化します

分類Dev

オーバーライドされたメソッド内で別のメソッドを呼び出すと、「抽象化に応じて」違反しますか?

分類Dev

オーバーライドされたメソッド内で元のメソッドを呼び出す方法

分類Dev

パラメータとしてサブクラスを持つオーバーロードメソッドが、スーパークラスとして呼び出されるメソッドを持っている

分類Dev

Backbone Collectionのremoveメソッドをオーバーライドしてから、親を呼び出す方法

分類Dev

間接的に呼び出されたメソッドをオーバーライドする方法

分類Dev

基本メソッドが仮想でない場合にオーバーライドされたメソッドを呼び出す

分類Dev

初期化されていない可能性のある配列をパラメーターとして使用するメソッドを呼び出す方法は?

分類Dev

varargsパラメーターを指定してオーバーロードされたメソッドを呼び出すときのNashornのバグ

分類Dev

コード修正:メソッド呼び出しに使用されているメンバーとクラスを変更する

分類Dev

source-Override / implementメソッドpasteメソッド呼び出しを介してEclipseのメソッドをオーバーライドする理由

分類Dev

コンパイル時エラー:オーバーロードされたメソッドの呼び出しがあいまいです。どうして?

分類Dev

Javaでは、派生クラスのオーバーライドメソッドから基本クラスのメソッドを呼び出す方法を教えてください。

分類Dev

F#でパラメータタイプによってオーバーロードされたメソッドを呼び出す方法は?

分類Dev

ポインタを使用して、オーバーライドされたメソッドが呼び出されない

分類Dev

複数のオーバーロードとデフォルトパラメータを使用して特定の基本メソッドを呼び出す

分類Dev

javaGenerics-子クラスの型とスーパークラスを知っている子オーバーロードメソッドを呼び出す方法

分類Dev

スーパークラスのオーバーライドされたメソッドをいつ、どこで呼び出すかを知る方法

分類Dev

メンバーメソッドが呼び出されているかどうかを確認する方法

分類Dev

パラメータとして指定されたC ++クラスメソッドを呼び出す方法は?

分類Dev

メソッド呼び出し引数で、解凍されたdictのキーワード引数をオーバーライドする方法は?

分類Dev

関数を呼び出さずに、型の基本関数がGoでオーバーライドされているかどうかを確認する方法は?

分類Dev

メソッドがRSpecで呼び出されているが、戻り値をオーバーライドしないかどうかをテストする方法

分類Dev

スーパーコンストラクターで呼び出されるオーバーライドメソッドにメンバーを使用する方法

Related 関連記事

  1. 1

    オーバーライドされていない基本クラスメソッドを呼び出すようにMoqを取得します

  2. 2

    Revealing PrototypePatternを使用してオーバーライドされたメソッドを内部的に呼び出す方法

  3. 3

    Androidで呼び出されていないメソッドをオーバーライドする

  4. 4

    メソッドをオーバーライドして基本型にキャストした後、どのメソッドが呼び出されますか?

  5. 5

    「スーパー」を使用してオーバーライドするメソッドでオーバーライドされたメソッドを呼び出していますか?

  6. 6

    UITableViewは、呼び出されていないいくつかのオーバーライドされたメソッドをサブクラス化します

  7. 7

    オーバーライドされたメソッド内で別のメソッドを呼び出すと、「抽象化に応じて」違反しますか?

  8. 8

    オーバーライドされたメソッド内で元のメソッドを呼び出す方法

  9. 9

    パラメータとしてサブクラスを持つオーバーロードメソッドが、スーパークラスとして呼び出されるメソッドを持っている

  10. 10

    Backbone Collectionのremoveメソッドをオーバーライドしてから、親を呼び出す方法

  11. 11

    間接的に呼び出されたメソッドをオーバーライドする方法

  12. 12

    基本メソッドが仮想でない場合にオーバーライドされたメソッドを呼び出す

  13. 13

    初期化されていない可能性のある配列をパラメーターとして使用するメソッドを呼び出す方法は?

  14. 14

    varargsパラメーターを指定してオーバーロードされたメソッドを呼び出すときのNashornのバグ

  15. 15

    コード修正:メソッド呼び出しに使用されているメンバーとクラスを変更する

  16. 16

    source-Override / implementメソッドpasteメソッド呼び出しを介してEclipseのメソッドをオーバーライドする理由

  17. 17

    コンパイル時エラー:オーバーロードされたメソッドの呼び出しがあいまいです。どうして?

  18. 18

    Javaでは、派生クラスのオーバーライドメソッドから基本クラスのメソッドを呼び出す方法を教えてください。

  19. 19

    F#でパラメータタイプによってオーバーロードされたメソッドを呼び出す方法は?

  20. 20

    ポインタを使用して、オーバーライドされたメソッドが呼び出されない

  21. 21

    複数のオーバーロードとデフォルトパラメータを使用して特定の基本メソッドを呼び出す

  22. 22

    javaGenerics-子クラスの型とスーパークラスを知っている子オーバーロードメソッドを呼び出す方法

  23. 23

    スーパークラスのオーバーライドされたメソッドをいつ、どこで呼び出すかを知る方法

  24. 24

    メンバーメソッドが呼び出されているかどうかを確認する方法

  25. 25

    パラメータとして指定されたC ++クラスメソッドを呼び出す方法は?

  26. 26

    メソッド呼び出し引数で、解凍されたdictのキーワード引数をオーバーライドする方法は?

  27. 27

    関数を呼び出さずに、型の基本関数がGoでオーバーライドされているかどうかを確認する方法は?

  28. 28

    メソッドがRSpecで呼び出されているが、戻り値をオーバーライドしないかどうかをテストする方法

  29. 29

    スーパーコンストラクターで呼び出されるオーバーライドメソッドにメンバーを使用する方法

ホットタグ

アーカイブ