2

抽象メソッドで抽象クラスを継承するクラスを宣言したい。 また、子クラスのメソッドで共通コードを自動的に呼び出したい(つまり、ログコード)

public abstract class AbstractClass
{
    public abstract void AbstractMethod();
    public void CommonCode()
    {
        //do something
    }
}

public class ChildClass : AbstractClass
{
    public void AbstractMethod()
    {
        //automatically call CommonCode in base class
        //do something
    }
}

イベントは私を助けることができますか?

よろしく

4

3 に答える 3

5

凝りすぎずに、抽象メソッドを継承者に実行させたいことの「根性」にし、基本クラスのラッパーメソッドから呼び出すことができます。例えば:

public abstract class AbstractClass
{
    // Note that this protected since consumers won't call it directly
    protected abstract void AbstractMethod();

    // Instead, consumers will use this method which calls CommonCode
    // before the abstract method.
    public void AbstractMethodWrapper()
    {
        CommonCode();
        AbstractMethod();
    }

    public void CommonCode()
    {
        //do something
    }
}

public class ChildClass : AbstractClass
{
    protected override void AbstractMethod()
    {
        // The wrapper method in the base handles calling common code
        //do something
    }
}
于 2013-02-07T14:50:06.600 に答える
0

私はあなたが次のようなものを探していると思います(私があなたを正しく理解している場合):

 public abstract class AbstractClass
    {
        public abstract void AbstractMethod();
        public void CommonCode()
        {
            //do something
        }
    }

    public class ChildClass : AbstractClass
    {
        public override void AbstractMethod()
        {
            //automatically call CommonCode in base class
            //do something
            base.CommonCode();
        }
    }
于 2013-02-07T14:47:28.053 に答える
0

そのためには、インターセプターが必要です。

PostSharpはシンプルで強力なので、ここで提案します。たとえば、次の記事を確認してください。

于 2013-02-07T14:50:45.163 に答える