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;
        }
    }


   }

当我在对象 [] 中添加动物、学生和学校时,并尝试像这样循环访问

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

只需使用“ICommon”数组而不是“Object”数组,否则当您检索“Object”数组的项目时,您将不得不强制转换它们。

于 2012-12-15T03:41:47.323 回答