Как использовать класс VB.net в проекте С#?

Я хотел бы использовать приведенный ниже класс 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

person Lee    schedule 11.12.2011    source источник
comment
1) Кажется, достаточно просто перевести 6 строк VB на C#, если вам не нужно сохранять его как VB, и 2) Почему люди продолжают создавать XML, используя конкатенацию строк, а не, я не знаю , фактические компоненты, понимающие XML.   -  person Damien_The_Unbeliever    schedule 11.12.2011
comment
Обратите также внимание на то, насколько сломан этот класс. Вы можете вызвать ToString() только один раз, иначе он точно не будет XML.   -  person Damien_The_Unbeliever    schedule 11.12.2011


Ответы (4)


Вам нужно создать сборку VB.NET DLL (используя шаблон проекта библиотеки из Visual Studio), а затем вы можете добавить ссылку на сборку DLL в свой проект C#. Убедитесь, что за пределами сборки видны только общедоступные типы (классы).

person kv-prajapati    schedule 11.12.2011

Да. Поскольку и VB.NET, и C# компилируются в IL (промежуточный язык), вы можете просто создать библиотеку (файл DLL) в VB. NET, а затем использовать эту библиотеку в C#.

person Saeed Neamati    schedule 11.12.2011

Лучше перевести на 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;
    }
  }
person Damien_The_Unbeliever    schedule 11.12.2011
comment
Это не обязательно лучшая идея. Дублирование кода никогда не бывает хорошим. Это было бы лучшей идеей, если они не хотят сохранять исходную версию VB.Net. - person Merlyn Morgan-Graham; 11.12.2011
comment
Что ж, мое мнение таково, что исходную версию VB не стоит сохранять. Вышеупомянутое, конечно, может быть переведено обратно в VB. - person Damien_The_Unbeliever; 11.12.2011
comment
Хотел бы +100, если бы мог..... этот исходный код действительно не подлежит восстановлению - вы можете просто надеяться, что это биологически одноразовые байты :-) - person marc_s; 11.12.2011

Преобразуйте класс в C# или сохраните класс в библиотеке классов и укажите ссылку на него в проекте C#.

person Joshua H    schedule 11.12.2011