2014-12-23 5 views
0

리플렉션을 사용하여 액세스 배열 요소를 사용할 수 있습니까? 예를 들어 리플렉션을 사용하여 배열 멤버에 액세스

제가

어레이
array<String^>^ Strings_Array=gcnew array<String^>{"One","Two","Three"}; 

하고 형변환없이 수행 할 수있다

Replace_Two(Object^ Strings_Array) 
{ 
Type^ Array_Type=Strings_Array->GetType(); 

String^ Array_Type_Name=Array_Type->ToString(); //it is "System.ValueType[]" 

//make magic to replace "Two" to "Four" 

} 

기능이 있습니까?

array<String^>^ Finction_Strings_Array=(array<String^>^)Strings_Array; 

당신이 경우 아무 것도 구입하지 않는 당신에게

답변

2

반사 감사드립니다. GetType()에 의해 반환 된 형식은 코드에서 아무 곳에도 선언하지 않은 동적으로 생성 된 형식입니다. System::Array에서 파생됩니다. 객체가 실제로 배열이라는 선험적 지식이 있어야 요소를 현명하게 색인 할 수 있습니다. 이 요구 사항을 감안할 때 System :: Array로 캐스팅하는 것이 더 간단합니다. 이와 같이 :

배열의 순위를 확인하면서 1 차원 코드인지 확인하면서 코드를 추가 할 수 있습니다. 그리고 사용하는 색인이 범위를 벗어나는 것이 아닌지 다시 확인하십시오. 그러나 CLR이 좋은 예외를 생성 할 필요는 없습니다.

관련 문제