나는이 답변을 찾으려고했지만 가장 가까운 것을 찾았습니다 : Create an instance of a class from a string하지만 내 질문에 대답하지 않습니다 :C#에서 전달 된 문자열을 사용하여 함수에서 객체를 만들려면 어떻게해야합니까?
어떻게 클래스의 인스턴스를 만들 수 있습니까? 문자열, 예. WinForms 개체를 만들고 MDI에 추가하려고합니다.
인스턴스에 대해 문자열 (formname) (예 : "Form1")을 허용하고 MDI 하위에서 인스턴스를 확인하는 함수가 있습니다. 포커스가있는 경우 포커스를 설정하고, 그렇지 않으면 인스턴스를 만들어 하위에 추가합니다.
현재 양식을 만드는 방법은 사례 문과 함께하지만 새 양식을 프로젝트에 추가 할 때마다이를 업데이트해야합니다! 전달 된 문자열을 기반으로 MDI 하위 클래스에 Form 클래스의 인스턴스를 추가하는 방법이 있습니까? 예 : 의사 코드 :
함수 호출 : openForm ("Form2"); 이 같은
public void openForm(String formname)
{
if form exists in MDI children
{
focus form with name = formname;
}
else
{
MDIChildren.add(CreateInstanceOfClassNamed(formname));
}
}
왜 Activator.CreateInstance가 도움이됩니까? 어디가 부족합니까? 정교한. = –
@ J.Steen 첫 번째 문장의 예제에서 대답은 Activator.CreateInstance입니다. 하지만 객체 유형으로 변환됩니다. ReportClass report = (ReportClass) Activator.CreateInstance (Type.GetType() reportClass)); 저는 이것을 이해하지 못합니다 - 유형을 이미 알고있는 것으로 보입니다 (ReportClass). 그래서 Type.GetType (reportClass)에서 반환 된 유형이 (ReportClass2) 인 경우이 경우 작동하지 않습니다. 또는 아마도 나는 그것을 정확하게 이해하지 않고있다? – Rick
당신이 알아야 할 것은 Form이 상속된다는 것입니다. MDIChildren은 해당 유형을 받아 들여야합니다. –