关于vb.net:使用VB中的StatePrinter而不是C#来实现ToString

Using StatePrinter from VB rather than C# to implement ToString

我正试图遵循这里发布的有希望的建议,尝试使用StatePrinter作为滚动我自己的ToString方法的快捷方式。我同意OP的观点,很遗憾VS仍然不能为我生成这个方法。

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

我可以让so-answer中的示例代码在我的c代码中正常工作,但当我执行我认为在我的vb代码中等效的操作时:

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

我刚得到编译器错误

1
'Stateprinter' is ambiguous in the namespace 'StatePrinter'

还有另一个构造函数stateprinter(只注意大小写的不同),它被弃用,在任何情况下都会生成相同的错误消息。

我得出了不幸的结论

  • vb2015中的vb起着不区分大小写的作用。那是真的吗?
  • 没有其他人使用VB中的StatePrinter。
  • 有人能就如何使用VB中的Stateprinter提供任何建议吗?我愿意相信我在把C示例转换为VB时犯了一个相当愚蠢的错误。


    几乎不可能直接在VB中使用它来解决不明确的名称问题。您可以用C编写一个类库包装器,它不会公开这种不匹配(即,它有一个内部StatePrinter对象,并且公开了基于pascalC的构造函数)。

    另一种选择是在VB项目中使用反射来绕过大小写不敏感。

    您还可以创建Github问题。或者,成为项目的贡献者并为其创建建议的修复。:)


    当我在上面的问题中写完1后,我就能够找到这个答案了。

    是的,vb不区分大小写,至少在这种情况下需要这样做:看这里写得很好:https://stackoverflow.com/a/2301980/165164

    所以,我们只剩下一个相当哀伤的问题:没有其他人使用VB中的Stateprinter吗?