CSharp

MessageHandlerAttribute の作成

これは簡単に Attribute 化できそうです。 [AttributeUseage(AttributeTargets.Method)] public class MessageHandlerAttribute : Attribute { public int id; public MessageHandlerAttribute(int msgId) { id = msgId; } } 完成……、というのはあまりにもな…

Attribute でがんばってみる?

さて、C# でも*1(利用者に)楽ができるようにしたいものです。目標とすることは色々とありますが、特定のクラスに別のクラスの実装を付与する必要があります。このようなことをアグリゲートとか Mix-in とかアスペクト思考的などと呼ぶようですが、C# では …

has-a による委任

典型的な実装として、has-a の関係にすることが考えられます。 public class Concrete1 : IFoo { public Concrete11() { impl_foo = new FooImplement(this); } #region IFoo interface implementation public int foo { // FooImplement クラスへ委任します…

委任によるインターフェスの実装

いきなり重めの話題ですが、あまりないことではあるものの、それなりの需要として interface の実装を委任したい場合があります。この実装に関しては C++ であれば多重継承なんかを用いるところなのですが、C# では多重継承はできませんので、別の手法を考え…