2012-12-15 2 views
4

공통 인터페이스에서 상속받은 여러 유형의 객체 인스턴스가 있습니다. 목록이나 arraylist 또는 컬렉션을 반복하여 각 개체의 일반적인 메서드에 액세스하려고합니다. 어떻게해야합니까? 내가 개체 []에 동물, 학생 및 학교를 추가하고,목록을 반복하여 각 객체의 공통 메소드에 액세스하십시오.

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

처럼 루프에서 에 액세스하려고하면

{ 

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


    } 

서로 다른 유형의 일반적인 방법을 액세스 할 수 있습니다 목록이나 컬렉션에서?

답변

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

"Object"배열 대신 "ICommon"배열을 사용하십시오. 그렇지 않으면 "Object"배열의 항목을 검색 할 때이를 캐스팅해야합니다.

관련 문제