2012-12-15 56 views
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. 
} 

是否有可能訪問不同類型的常用方法從列表或集合中?

回答

6

你需要或者強制轉換對象ICommon

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

或者perferably你應該使用的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(); 
2

只需使用「ICommon」數組而不是使用「Object」數組,否則當您檢索「Object」數組的項目時,您將不得不施放它們。