C# 两种方法返回的类型不同,没有参数,如何调用?

C# 两种方法返回的类型不同,没有参数,如何调用?,c#,.net,visual-studio,obfuscation,ambiguity,C#,.net,Visual Studio,Obfuscation,Ambiguity,有一些.net Dll库,此Dll包含一个具有两个同名方法的类,例如: void b() { } bool b() { } 这在C#中是不可能的,但在内部似乎还可以,在添加这样的库时,如何从代码中调用一个方法 我需要最简单的方法,我知道使用反射是可以的,但是还有其他更简单的方法吗 *编辑* 我在图书馆的元数据中得到了以下信息: #region Assembly XXXX.dll, v xxxx // C:\.................... #endregion namespa

有一些.net 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();
    }
}

哦,太可怕了。你可以从C#中调用它的唯一方法是通过反射;您可能需要使用
GetMethods()
并从数组中找到所需的方法(
GetMethod()
重载可能不喜欢这样)


拥有
MethodInfo
后,您可以使用
Invoke
,也可以使用
Delegate.CreateDelegate
获取可重复使用的类型化委托。这取决于您调用它的频率,其中哪一个更可取。

只有在它们位于两个不同的类中时才有可能,因此请使用类名和名称空间。在内部,什么似乎是可以的?不好。这在C#中是不可能的,我想至少它们不是公共的(因为它们被混淆了)。你想使用反射吗?@lazyberezovsky和gdoron:这在C#中是不可能的,但在CLR和IL中是可能的。模糊处理工具通常会执行这样的操作;如果这是一个模糊化的dll,并且他们已经模糊化了公共API,那么这可能不是您想要的dll。在某个地方应该有一个非模糊的(或者至少在公共API正常的情况下)。当然,如果这是一个C++/CLI dll,或者是用IL编写并用ILASM编译的东西,或者是通过reflection.emit编译的东西,那么:是的,这很难。你确定这是可能的吗@你可以在IL写下,然后使用ILASM,或者你可以用C++编写它;你也可以通过反射来实现。还有其他方法吗:)我知道反射可以做到,但我需要更简单的方法。@MohamedSakherSawan“更简单的方法”是:不要尝试使用模糊的DLL。这是一个病态的边缘案例——C#语言不允许这种情况,也不想让它变得容易。