使用 VB 中的 StatePrinter 而不是 C# 来实现 ToString

Using StatePrinter from VB rather than C# to implement ToString

我正在努力遵循承诺 suggestion posted here to try StatePrinter as a shortcut to rolling my own ToString methods. I agree with the OP 遗憾的是 VS 仍然无法为我生成此方法。

我在 VS2015(社区版)中有一个相当大的项目,其中包含 VB 和 C# 代码。我使用 NuGet 添加了当前稳定版本的 StatePrinter。

我可以使 SO 答案中的示例代码在我的 C# 代码中正常工作,但是当我执行我认为在我的 VB 代码中等效的操作时:

Private Shared sp As StatePrinter.Stateprinter = New StatePrinter.Stateprinter
    Public Overrides Function ToString() As String
        Return sp.PrintObject(Me)
    End Function

我刚收到编译器错误

'Stateprinter' is ambiguous in the namespace 'StatePrinter' 

还有另一个构造函数 StatePrinter(仅注意大小写的区别)已被弃用,并且在任何情况下都会生成相同的错误消息。

我得出了一个不幸的结论

    VS2015 中的
  1. VB 就像不区分大小写一样。这是真的吗?
  2. 没有其他人在使用来自 VB 的 StatePrinter。

任何人都可以提供有关如何使用来自 VB 的 StatePrinter 的任何建议吗?我愿意相信我在将 C# 示例转换为 VB.

时犯了一些相当脑残的错误

当我在上面的问题中写完 #1 后,我就能弄清楚如何搜索该位的答案。

是的,VB 不区分大小写,至少在这种情况下是这样: 在这里查看相当不错的文章:

所以,我们留下了一个相当悲伤的问题:没有其他人使用 VB 的 StatePrinter 吗?

几乎不可能直接在 VB 中使用它来解决名称不明确的问题。您可以在 C# 中编写一个 class 库包装器,它不会暴露这种不匹配(也就是说,它有一个内部 StatePrinter 对象并暴露相同 PascalCased 的构造函数。

另一种选择是在 VB 项目中使用反射来解决不区分大小写的问题。

您还可以创建一个 GitHub 问题。或者,成为该项目的贡献者并为其创建建议的修复程序。 :)