通过迭代列表来访问每个对象的常用方法

时间:2012-12-15 03:37:24

标签: c# arrays collections interface arraylist

我有多种类型的对象实例从公共接口继承。 我想通过迭代列表或arraylist或集合来访问每个对象的常用方法。我该怎么做?

    {

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

是否可以从列表或集合中访问不同类型的公共方法?

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:2)

只使用“ICommon”数组而不是使用“Object”数组,否则当您检索“Object”数组的项目时,您将不得不进行投射。