4

共通のインターフェースから継承する複数のタイプのオブジェクトインスタンスがあります。リスト、配列リスト、またはコレクションを反復処理して、各オブジェクトから共通のメソッドにアクセスしたいと思います。それ、どうやったら出来るの?

    {

    interface ICommon
    {
        string getName();
    }

    class Animal : ICommon
    {
        public string getName()
        {
            return myName;
        }
    }

    class Students : ICommon
    {
        public string getName()
        {
            return myName;
        }
    }

    class School : ICommon
    {
        public string getName()
        {
            return myName;
        }
    }


   }

動物、生徒、学校をobject []に追加し、次のようなループでアクセスしようとすると、

for (loop)
{
   object[n].getName // getName is not possible here. 
   //This is what I would like to have.
or 
   a = object[n];
   a.getName // this is also not working. 
}

リストまたはコレクションから、さまざまなタイプの一般的なメソッドにアクセスすることは可能ですか?

4

2 に答える 2

6

オブジェクトをにキャストする必要がありますICommon

var a = (ICommon)object[n];
a.getName();

または、おそらくあなたはの配列を使用する必要がありますICommon

ICommon[] commonArray = new ICommon[5];
...
commonArray[0] = new Animal();
...
commonArray[0].getName();

または、使用を検討することもできますList<ICommon>

List<ICommon> commonList = new List<ICommon>();
...
commonList.Add(new Animal());
...
commonList[0].getName();
于 2012-12-15T03:51:35.330 に答える
2

「Object」配列を使用する代わりに「ICommon」配列を使用するだけです。そうしないと、「Object」配列のアイテムを取得するときに、それらをキャストする必要があります。

于 2012-12-15T03:41:47.323 に答える