2011-12-11 5 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 2)XMLを理解している実際のコンポーネントではなく、文字列連結を使用してXMLを構築し続けるのはなぜか分かりません。 –

+7

また、このクラスがどれほど壊れているか注意してください。あなたは 'ToString()'を一度しか呼び出せません。それ以外の場合は、* XMLではありません。 –

答えて

2

あなたは(Visual Studioのからライブラリプロジェクトテンプレートを使用して)VB.NET DLLアセンブリを作成する必要があり、その後、あなたのC#プロジェクトにDLLアセンブリの参照を追加することができます。パブリックタイプ(クラス)のみがアセンブリの外側に表示されていることを確認してください。

0

クラスをC#に変換するか、クラスをクラスライブラリに保存してC#プロジェクトで参照します。

2

はい。 VB.NETC#の両方がIL(中間言語)にコンパイルされているため、VB.NETでライブラリ(DLLファイル)を作成してからC#でそのライブラリを使用できます。

3

これは、C#に翻訳すると、壊れたToString()実装修正すると良いでしょう:あなたがする必要がない場合は、それをC#にVBの6行を翻訳するのに十分な、単純なように見える)

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がほしいですか?その元のコードは本当に**修理を超えています** - あなたはそれが生物学的に使い捨てのバイトであることを願っています:-) –

関連する問題