如何在C#项目中使用VB.net类?

3
我想在我的C#项目中使用下面的VB.Net类。有没有办法做到这一点? 提前致谢。
 Public Class XMLItemList
        Private sb As System.Text.StringBuilder

        Public Sub New()
            sb = New System.Text.StringBuilder
            sb.Append("<items>" & vbCrLf)
        End Sub

        Public Sub AddItem(ByVal Item As String)
            sb.AppendFormat("<item id={0}{1}{2}></item>{3}", Chr(34), Item, Chr(34), vbCrLf)
        End Sub

        Public Overrides Function ToString() As String
            sb.Append("</items>" & vbCrLf)
            Return sb.ToString
        End Function     
    End Class

1
  1. 如果你不需要保留VB的话,将6行VB代码转换成C#似乎很简单。
  2. 为什么人们要使用字符串拼接来构建XML,而不是使用真正理解XML的组件呢?
- Damien_The_Unbeliever
7
请注意这个类有多么糟糕。你只能调用一次 ToString(),否则它返回的内容肯定不是 XML。 - Damien_The_Unbeliever
4个回答

4

您需要创建VB.NET DLL程序集(使用Visual Studio的库项目模板),然后可以将DLL程序集的引用添加到您的C#项目中。请确保仅有公共类型(类)可在程序集外部可见。


3
是的。因为VB.NET和C#都编译成中间语言(IL),所以你可以在VB.NET中创建一个库(DLL文件),然后在C#中使用该库。

3

最好将其翻译为C#,并修复损坏的ToString()实现:

  using System.Xml;

  public class XMLItemList
  {
    XmlElement el;
    XmlDocument doc;

    public XMLItemList()
    {
      doc = new XmlDocument();
      el = doc.CreateElement("items");
    }

    public void AddItem(string item)
    {
      var itemXml = doc.CreateElement("item");
      var attr = doc.CreateAttribute("id");
      attr.Value = item;
      itemXml.Attributes.Append(attr);

      el.AppendChild(itemXml);

    }

    public override string ToString()
    {
      return el.OuterXml;
    }
  }

这并不一定是最好的想法。代码重复从来都不是好事。如果他们不想保留原始的VB.Net版本,那么这将是最好的想法。 - Merlyn Morgan-Graham
3
我的意见是,原始的VB版本不值得保留。当然,上述内容可以被翻译回VB语言。 - Damien_The_Unbeliever
如果可以的话,我想给它加100分......那个原始代码确实无法修复 - 你只能希望它是可生物降解的字节 :-) - marc_s

0

将该类转换为C#,或将该类保存在类库中,并在C#项目中引用它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接