2017-10-27 6 views
-1

현재 C#으로 리플렉션 작업을하고 있는데 질문이 있습니다. 나는 추상적이거나 인터페이스가 될 수있는 다른 클래스 유형을 호출하려고한다. 그래서 인스턴스를 만들 수 없기 때문에 (단지) 그 메소드를 호출하지 않습니다. 그러나 나는 이것에 만족하지 않는다.추상 형식의 메서드 호출


내 질문은 : 어떻게 든이 문제를 해결 나는 주어진 추상 클래스 형식의 메서드를 호출 할 수있는 무언가의 인스턴스를 만들 수 있습니다? 그런 다음 추상 형식이 될 수있는 템플릿에서 상속하는 클래스를 만드는 것처럼 분류 할 수 있습니까?

foreach (MethodInfo m in _classType.GetMethods(bindingFlags)) 
    { 
       if (_classType.IsAbstract || _classType.IsInterface) 
       { 
        // only invoke instanciable types 
        MessageBox.Show("Abstract class and Interface cannot be invoked!"); 
       } 
       else 
       { 
        var ms = CreateStringFromMethodForCheckedBox(m); 
        if (s == ms) 
        { 
         m.Invoke(Activator.CreateInstance(_classType), null); 
        } 
       } 
    } 
+2

정의 없이는 무엇을 해야할지 모르는 곳에서 추상적 인 방법을 기대하고 있습니까? – praty

+0

또한 인터페이스에 대해 언급하고 있는데, 인터페이스에서 "메소드"를 호출하려고하면 어떻게 될 것으로 예상됩니까? 이 질문은 더 이상의 정보가 없다면 실제로 의미가 없습니다. – DavidG

답변

1

예, 동적으로 추상 형식에서 상속 런타임에 새 클래스를 만든 다음 클래스의 메소드를 호출 : 당신은해야합니다

http://www.c-sharpcorner.com/UploadFile/87b416/dynamically-create-a-class-at-runtime/는 모든 추상 메소드를, 그렇지 않으면 무시 보장 당신의 수업은 추상적이어야하고 당신은 아무것도 얻지 못할 것입니다.

+0

원본 질문이 틀림없이 수행해서는 안되는 작업을 시도하는 동안 왜 이것이 다운 voted되었는지 확실하지 않지만, 가장 합리적인 해결 방법입니다. –

+0

@ TitianCernicova-Dragomir 그래, 나는 downvote도 이해하지 못한다. – john

+0

질문에 언급 된 인터페이스는 어떻습니까? – DavidG