2011-12-11 23 views
1

我想在我的C#项目中使用下面的VB.Net类。有没有办法做到这一点? 在此先感谢。如何在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; 2)为什么人们使用字符串连接来构建XML,而不是我不知道理解XML的实际组件。 –

+7

另外请注意这个班级是多么的糟糕。你只能调用'ToString()'一次,否则它肯定返回*不是* XML。 –

回答

2

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

0

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

2

是的。因为两者都是VB.NETC#编译成IL(中间语言),您可以简单地在VB.NET中创建一个库(DLL文件),然后在C#中使用该库。

3

这是更好它翻译成C#,并修复损坏ToString()实现:这似乎是很简单的6线VB的翻译成C#

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; 
    } 
    } 
+0

这不一定是最好的主意。代码重复从来都不好。如果他们不想保留原始的VB.Net版本,这将是最好的想法。 –

+3

那么,我的意见是,原来的VB版本*不值得保留。以上内容当然可以转换回VB。 –

+0

想要+100,如果我可以.....原始代码确实**无法修复** - 你可以只希望它是生物一次性字节:-) –

相关问题