C# 如何正确解决扩展方法上的不明确调用异常
我刚刚在C#中收到以下编译时错误: 不明确的调用:C# 如何正确解决扩展方法上的不明确调用异常,c#,.net,extension-methods,assemblies,ambiguous,C#,.net,Extension Methods,Assemblies,Ambiguous,我刚刚在C#中收到以下编译时错误: 不明确的调用: LibA中的字符串GetDescription(此LibA.enum_联系人) LibB中的字符串GetDescription(此LibB.enum_联系人) 很清楚这意味着什么,但由于我需要使用这两个库,而且它们都是封闭源代码的,我想知道什么是合适的解决方法。在使用代码时,我可以想到以下几点: 将源文件拆分为两个部分,但不确定这是否会产生相同的错误(是在每个文件的作用域中使用指令,还是在每个代码单元中使用指令?) 为这些扩展方法创建包装器
LibA中的字符串GetDescription(此LibA.enum_联系人)
LibB中的字符串GetDescription(此LibB.enum_联系人) 很清楚这意味着什么,但由于我需要使用这两个库,而且它们都是封闭源代码的,我想知道什么是合适的解决方法。在使用代码时,我可以想到以下几点:
- 将源文件拆分为两个部分,但不确定这是否会产生相同的错误(是在每个文件的作用域中使用指令,还是在每个代码单元中使用指令?)
- 为这些扩展方法创建包装器
- 使用完全限定名调用扩展方法作为普通方法
- 或者,另外,使用-指令用
重新定义类名,以减少痛苦
using LibA rename ClassA.GetDescription to GetMyDescription
using LibB rename ClassB.GetDescription to GetDescriptionB
但我不相信我在6.0之前见过这样的C#方法。也就是说,您可以重命名类名,但不能重命名方法名
有人有比上述建议更好的想法吗?你可能想看看这个问题:谢谢,@Dennis_E,这些节目确实展示了这里发生的事情。他的建议是使用非扩展方法语法来克服名称冲突(我上面的选项3),非扩展方法语法会容易得多。如果只有两个方法,我就写两个包装器方法。你可能想看看这个问题:谢谢,@Dennis_E,这确实说明了这里发生了什么。他的建议是使用非扩展方法语法来克服名称冲突(我上面的选项3),非扩展方法语法会容易得多。如果只有两个方法,我就写两个包装器方法。