2009年12月23日水曜日

静的メソッドを作成するのではなく、インターフェイスを実装したクラスのインスタンスをインターフェイスにキャストすることによって変数に代入してみる。
using System;


// プロパティを含んだインターフェイス
interface IInterface
{
    int x
    {
        get;
        set;
    }
    int y
    {
        get;
        set;
    }
}
// プロパティのみのインターフェイスを実装
class DerivedClass : IInterface
{
    int n;
    int m;
    public DerivedClass(int n, int m)
    {
        this.n = n;
        this.m = m;
    }
    public int x
    {
        get { return ++n; }
        set { n = value; }
    }
    public int y
    {
        get { return --m; }
        set { m = value; }
    }
}
class MainClass
{
    static void Main()
    {
        DerivedClass dc1 = new DerivedClass(1, 10);
        // 出力値:2 9
        Console.WriteLine(dc1.x + " " + dc1.y);


        DerivedClass dc2 = new DerivedClass(1, 10);
        IInterface i = (IInterface)dc2;
        // 出力値:n=2 m=9
        Console.WriteLine("n={0} m={1}", i.x, i.y);
    }
}

0 コメント:

コメントを投稿