3

次のように、C# でジェネリック Decorator クラスを実装する方法がないので (そうですか?)、私は疑問に思います。

public class Decorator<TDecoratorIterface> : TDecoratorInterface 
{
    public TDecoratorInterface Component {get; private set;}

    protected Decorator(TDecoratorInterface component)
    {
        Component = component;
    }
}

次のように使用します。

public interface IDogDecorator 
{
    void Bark();
}

public class Dog : IDogDecorator
{
    public void Bark()
    {
        Console.Write("I am a dog");
    }
}

public class StinkingDog : Decorator<IDogDecorator>
{
    public StinkingDog(IDogDecorator dog):base(dog)
    {
    }

    public void Bark()
    {
        Component.Bark();
        Console.WriteLine(" and I stink");
    }
}

そのようなことは、PostSharp または .NET 用の他の AOP フレームワークを介して管理できますか?

あなたの答えに感謝します。私は成功せずにそのような構成を作成しようとして半日を費やしたので、どんな助けも感謝しています:)

4

1 に答える 1