2016-07-08 3 views
0

이 질문의 제목을 어떻게 달리지 확신하지 못했습니다.
다른 변수를 통해 클래스의 멤버 변수를 검색하려고합니다. 예를 들어 설명하겠습니다.다른 변수 이름을 통해 멤버 변수 가져 오기 C#

이 코드는 Network 클래스의 멤버 변수 값에 액세스하려고 시도하는 코드입니다.
(item은하지내가 액세스를 시도하고있는 변수의 이름입니다 item 내가 액세스를 시도하고있는 변수의 문자열을 보유하고 있습니다.)

private void addKeyValuePairRow(string item) { 
    addRow(item); 
    addKeyLabel(item, false); 
    addValueLabel(item); 

    if (item.Contains("_")) 
     item = item.Replace("_", ""); 

    setValue(Network[item]); 
} 

네트워크 클래스 :

public class Network { 
    public string DefaultGateway { get; set; } 
    public string ExternalIP { get; set; } 
    public string SSID { get; set; } 
    public string NetworkConnection { get; set; } 
    public string NetworkConnectionType { get; set; } 
    public string InternetConnection { get; set; } 

    ... 
} 

그래서 DefaultGateway을 얻으려고한다고 말하면,이 코드는 메소드를 호출하는 코드입니다.

addKeyValuePairRow("Default_Gateway"); 

비교적 간단한 작업이지만 느낄 수없는 것 같습니다.

도움을 주시면 감사하겠습니다. 당신의 네트워크 클래스는 그러나 귀하의 질문에 아무 곳이나 인스턴스화되는 경우 당신은 정의되지 않은 한

var src = new Network(); 
setValue(src.GetType().GetProperty(item).GetValue(src, null)); 

같은

+2

리플렉션을 사용할 수 있습니다. 자세한 내용은 https://msdn.microsoft.com/en-us/library/system.reflection.fieldinfo.getvalue(v=vs.110).aspx를 참조하십시오. –

+0

응용 프로그램에서 수행 할 작업의 양에 따라 문제는 아주 광범위하게 변할 수 있지만 한 가지는 확실합니다. 리플렉션이나 'Automapper'와 같은 타사 라이브러리를 사용하는 방법이 있습니다. 리플렉션 (이 모든 GetType(), GetProperty() 등)은 느리게 작동하며 높은 작업량에서 성능 문제를 일으킬 수 있습니다. – Fabjan

답변

3

뭔가.

+1

이것은 완벽하게 작동합니다! 고맙습니다! – wmash

관련 문제