2013-02-25 6 views
3

Существует несколько .net Dll библиотеки, это Dll содержит класс с двумя методами с тем же именем, такие как:Два метода, возвращающих разные типы без параметров, как звонить?

void b() 
{ 

} 

bool b() 
{ 

} 

Это не возможно в C#, но, как представляется, КИ внутри, как может Я использую один метод из моего кода при добавлении такой библиотеки?

Мне нужен простейший способ, я знаю, что это хорошо, используя отражение, но есть ли другой способ?

* EDIT *

Я получаю это в метаданных библиотеки:

#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

@gdoron да, я –

+1

Что скомпилировано? – gdoron