이 질문의 제목을 어떻게 달리지 확신하지 못했습니다.
다른 변수를 통해 클래스의 멤버 변수를 검색하려고합니다. 예를 들어 설명하겠습니다.다른 변수 이름을 통해 멤버 변수 가져 오기 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));
같은
는
리플렉션을 사용할 수 있습니다. 자세한 내용은 https://msdn.microsoft.com/en-us/library/system.reflection.fieldinfo.getvalue(v=vs.110).aspx를 참조하십시오. –
응용 프로그램에서 수행 할 작업의 양에 따라 문제는 아주 광범위하게 변할 수 있지만 한 가지는 확실합니다. 리플렉션이나 'Automapper'와 같은 타사 라이브러리를 사용하는 방법이 있습니다. 리플렉션 (이 모든 GetType(), GetProperty() 등)은 느리게 작동하며 높은 작업량에서 성능 문제를 일으킬 수 있습니다. – Fabjan