如何正确解决扩展方法上的模糊调用异常

时间:2015-09-15 09:02:32

标签: c# .net extension-methods assemblies ambiguous

我刚收到C#中的以下编译时错误:

  

模糊调用:
  LibA中的字符串GetDescription(此LibA.enum_contact)
  LibB中的字符串GetDescription(此LibB.enum_contact)

很清楚它意味着什么,但由于我需要使用这两个库并且它们是闭源的,我想知道什么是正确的解决方法。我可以在使用代码中考虑以下内容:

  • 将源文件拆分为两个部分,但不确定这不会产生相同的错误(在每个文件或每个代码单元的范围内使用指令?)
  • 为这些扩展方法创建包装器
  • 使用完全限定名称作为常规方法调用扩展方法
  • 或者,此外,使用using - 指令重新定义类名称,以减少痛苦

这些似乎都不完全令人满意。在某些OO语言中,可以将您接受的内容限制为某种粒度,或者例如在Eiffel中,在导入方法时重命名方法并且存在名称冲突。我很乐意能够做到:

using LibA rename ClassA.GetDescription to GetMyDescription
using LibB rename ClassB.GetDescription to GetDescriptionB

但是我不相信我已经看到过这样的C#方法直到6.0。即,您可以重命名类名,但不能重命名方法名。

有人比上面的建议有更好的主意吗?

0 个答案:

没有答案