2015年6月15日月曜日

[C#]Mixinの表現方法

色んなやり方があるけど、privateメソッドまですべてを自由に使えるというのでこういう方法はありなのかと思って書いたメモ。

イメージは、1つのモデルオブジェクトに対して、Aさん、Bさん、Cさん不特定多数の使い方(インターフェイス)を用意する。

つまり、ダイソー商品をDIY目的で本来の使い方をしない人向けの別インターフェイスを設ける、というような感じ。


using test1;

public class Hello{
    public static void Main(){
        // Here your code !
        var test = new test();
        var t1 = (ITest1)test;
        var t2 = (ITest2)test;
        var t3 = (ITest3)test;
       
        t1.Hello();
        t2.World();
        t3.Hello();
        t3.World();
    }
}

namespace test1
{
    using System;

    interface ITest1
    {
        void Hello();
    }

    interface ITest2
    {
        void World();
    }

    interface ITest3
    {
        void Hello();
        void World();
    }

    public partial class test
    {
        private void Print(string message)
        {
            Console.WriteLine(message);
        }
    }

    public partial class test : ITest1
    {

        #region ITest1 メンバー

        public void Hello()
        {
            this.Print("Hello");
        }

        #endregion
    }

    public partial class test : ITest2
    {
        #region ITest2 メンバー

        public void World()
        {
            this.Print("World");
        }

        #endregion
    }

    public partial class test : ITest3
    {
        #region ITest3 メンバー

        void ITest3.Hello()
        {
            this.Print("Hello2");   //ITest1とは別のHelloとなる
        }

        void ITest3.World()
        {
            this.World();           //ITest2のWorldが呼ばれる
        }

        #endregion
    }
}
コメントを投稿

Androider