0
클래스 (내 경우에는 TabPage)에서 객체를 가져 오려고하지만 클래스 이름이 문자열로 주어집니다. 나는 내가 얻으려고하는 것을 위해 아래의 기본적인 예를 다뤘다. 리플렉션을 사용해 보았습니다. PropertyInfo를 얻을 수 있지만 실제 객체를 얻는 방법은 무엇입니까?주어진 문자열 이름을 가진 클래스와 속성을 얻는 방법
public Form1()
{
string TabName = "Car";
InitializeComponent();
/*
* Need the ability to get Class from string Name then get ConfigurationTab from that class
* PropertyInfo[] propertyInfo = Assembly.GetExecutingAssembly().GetTypes().Where(t => t.Name == TabName).FirstOrDefault().GetProperties();
*/
}
public class Car
{
public TabPage _Tab;
public TabPage ConfigurationTab { get { return _Tab; } }
public Car()
{
_Tab = new TabPage("Car");
_Tab.BackColor = Color.Red;
}
}
public class Truck
{
public TabPage _Tab;
public TabPage ConfigurationTab { get { return _Tab; } }
public Truck()
{
_Tab = new TabPage("Truck");
_Tab.BackColor = Color.Blue;
}
}
나는 추적 코드를 시도 :
Car car = new Car();
TabPage tp = (TabPage)propertyInfo[0].GetValue(car, null);
을하며 작업을 수행하지만 아이디어는 알려진 문자열에 의해 제공되지 않는 클래스입니다.
여기 제가 시도한 바가 있습니다 : object obj = Activator.CreateInstance (Type.GetTy pe ("Test.Form1 +"+ TabName)); 그러나이 점에 유의하면 내 경우에 "Car"라는 개체가 나에게 제공됩니다. TabPage에 액세스해야합니다. 객체를 사용하여 수행 할 수 없습니다. Car & Truck에서 상속 할 수있는 인터페이스를 추가하면 어떻게해야합니까? –
내 대답에 추가됩니다 ... –
내가 게시 한 시도하십시오. –