2013-02-25 5 views
3

,이 DLL이 같은 이름이 같은 두 가지 방법과 클래스를 포함매개 변수없이 다른 유형을 반환하는 두 가지 메소드, 호출 방법은 무엇입니까? 일부 닷넷의 DLL 라이브러리가있다

void b() 
{ 

} 

bool b() 
{ 

} 

그것은 C#으로 불가능하지만 내부적으로 확인하는 방법이 있습니다 것으로 나타납니다 라이브러리를 추가 할 때 코드에서 하나의 메서드를 호출합니까?

나는 가장 간단한 방법이 필요합니다. 나는 그것이 반사를 사용하는 것이 좋다고 알고 있지만, 다른 쉬운 방법이 있습니까?

* 편집 *

나는 도서관의 메타 데이터에이 점점 오전 :

#region Assembly XXXX.dll, v xxxx 
// C:\.................... 
#endregion 


namespace XXXX.YYYYY 
{ 
    public class a : IDisposable 
    { 

     . 
     . 
     . 
     . 
     . 
     public void b(); 
     public bool b(); 
     . 
     . 
     . 
     . 
     public void Dispose(); 
    } 
} 
+0

두 개의 다른 클래스에있는 경우에만 가능하므로 클래스 이름과 네임 스페이스를 사용하십시오. – gdoron

+0

* 내부적으로 * 괜찮은 것으로 보입니까 *? 좋지 않아. C#에서는 불가능합니다. –

+0

적어도 공개되지는 않습니다 (난독 화되어 있기 때문입니다). 리플렉션을 사용 하시겠습니까? –

답변

3

는 오, 그 끔찍한입니다. C#에서 호출 할 수있는 유일한 방법은 리플렉션을 사용하는 것입니다. GetMethods()을 사용하고 배열에서 원하는 것을 찾을 필요가 있습니다 (GetMethod() 과부하는 그다지 좋지 않을 수 있습니다).

MethodInfo을 얻었 으면 Invoke을 사용하거나 Delegate.CreateDelegate을 사용하여 다시 사용할 수있는 입력 된 대리인을 얻을 수 있습니다. 그것은 당신이 그것을 얼마나 자주 부르는가에 달려 있습니다.

+1

정말 가능할까요?! – gdoron

+1

@godon yes, 나는 –

+1

무엇을 편집 했습니까? – gdoron