我有多个从公共接口继承的对象实例类型。
我想通过遍历列表、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.
}

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

最佳答案

您需要将对象强制转换为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();

07-28 06:40