다음은 클래스 개체에서 속성 값을 가져 오는 내 메서드입니다. 클래스 이름을 String으로 전달하여 클래스를 인스턴스화하면 어떻게 동일한 결과를 얻을 수 있습니까? 인스턴스화 후 같은 페이지에서 사용할 수있는 'LoadFromXmlData()'메서드를 사용하려고합니다. 이 작업을 수행 할 수 있습니까?리플렉션을 사용하여 클래스 인스턴스화 및 메서드 호출
private string GetPropertyValue(string propName, string className)
{
Class1 _Class1;
Class2 _Class2;
Class3 _Class3;
if (className.Equals("Class1"))
{
_Class1 = new Class1();
_Class1 = (Class1)Class1.LoadFromXmlData(typeof(Class1), myData.ToString());
return _Class1.GetType().GetProperty(propName).GetValue(_Class1, null).ToString();
}
else if (ActionClassName.Equals("TicketActionDef"))
{
_Class2 = new Class2();
_Class2 = (Class2)Class2.LoadFromXmlData(typeof(Class2), myData.ToString());
return __Class2.GetType().GetProperty(propName).GetValue(_Class2, null).ToString();
}
else
{
_Class3 = new Class3();
_Class3 = (Class1)Class1.LoadFromXmlData(typeof(Class3), myData.ToString());
return __Class3.GetType().GetProperty(propName).GetValue(_Class3, null).ToString();
}
}
다음과 같이 DLL을로드합니다. 이 후에 어떻게해야합니까? 제발 도와주세요, 나는 매우 새로워졌습니다.
Type.GetType("Namespace.Class1").GetConstructor(new Type[] {}).Invoke(null);
"Namespace.Class1 :
Assembly assembly = Assembly.GetAssembly(typeof(MyAdapter));
MyAdapter currentEventObject = (MyAdapter)assembly.CreateInstance(className);
감사
왜 이런 끔찍한 명명 스타일? 그것은 코드를 읽을 수 없게 만듭니다. –
이름 지정 스타일에 불편을 끼쳐 드려 죄송합니다. 그 밖의 조건이라면 내 실제 기능은 훨씬 더 커집니다. 방금 달성하려고하는 일부 샘플 함수를 게시했습니다 – San
명명 스타일은 꽤 일반적이지만 달성하려는 것은 무엇입니까? 나는 왜 당신이 성찰을 사용하는지 알지 못한다. 큰 if/else 조건을 처리해야하는 경우 문제에 대한 더 나은 해결책을 찾아야합니다. – Zebi