2010-02-24 2 views
1

개체의 유형 (IAnimal이라고 가정 해 봅시다)을 인스턴스화해야하며 이름 (호랑이를 말하십시오)을 알고 있습니다. 개체 이름을 알고있는 변수가 문자열 인 경우 Tiger를 인스턴스화하는 코드를 작성하려면 어떻게해야합니까? 나는 여기에 간단한 것을 놓치고있을 가능성이 있지만, 현재 이것에 붙어있다.C#에서는 해당 유형의 이름이 지정된 객체를 만드는 방법은 무엇입니까?

업데이트 : Class Tiger : IAnimal을 의미하며 위에서 반영하여 변경되었습니다.

답변

5

Activator.CreateInstance 방법을

예를 사용 :

// the string name must be fully qualified for GetType to work 
string objName = "TestCreateInstance.MyObject"; 
IProcess txObject = (IProcess)Activator.CreateInstance(Type.GetType(objName)); 

또는

object o = Activator.CreateInstance("Assem1.dll", "Friendly.Greeting"); 

은 참조 : Reflection Examples C#

0

내가 충분히 질문을 이해 모르겠습니다. 그러나 ITiger가 실제로 구체적인 클래스이고 인터페이스가 아니라고 가정합니다 (I *가 제안한 것처럼).

리플렉션을 사용하여 문자열의 유형을 만들고 인스턴스화 할 수 있습니다. 같은

뭔가 :

ITiger myTiger = Activator.CreateInstance("ITiger") as ITiger; 

http://msdn.microsoft.com/en-us/library/system.activator.createinstance.aspx

당신이 무엇을 물어인가요?

1

리플렉션을 사용하여 클래스의 객체를 유형 이름으로 인스턴스화합니다. 그들은 단지 특정 클래스 구현해야하는지 정의하는 계약이기 때문에 당신은, 인터페이스 (당신의 이름에 의해 심사를) 인스턴스화 할 수 없습니다

object o = Activator.CreateInstance(Type.GetType("Tiger")); 

참고.

관련 문제