2013-07-19 3 views
5

私はバイナリ整数をデナリに変換する関数を持つクラスライブラリを作成しようとしています。その逆もありますので、関数を書き直すことなく別のプロジェクトにインポートできます。それは正常に動作し、クラスの一部です:VB.NET - クラス内の拡張機能?

Public Class BinaryDenary 
    Public Shared Function ToBinary(ByVal DenaryNumber As Integer) As Integer 
     Dim Binary As String = "" 
     While DenaryNumber > 0 
      If DenaryNumber Mod 2 = 1 Then 
       Binary = 1 & Binary 
      Else 
       Binary = 0 & Binary 
      End If 
      DenaryNumber \= 2 
     End While 
     Return CInt(Binary) 
    End Function 
End Class 

私はプロジェクト内でそれをテストし、正常に動作します。

ToBinary(3) 'Returns 11 
ToDenary(110) 'Returns 6 

しかし - 主に審美的な理由のために - 私は、変数を取り、これを行うことができるように、拡張メソッドと同じように使用できるようにしたいと思います:

NormalInt.ToBinary(3) 

しかし、私はすることができますクラスの内部に拡張メソッドを書いてはいけません。これを行う方法はありますか?それは非常に重要ではありませんが、私は可能な限り拡張メソッドを使用するのが好きです。

答えて

12

VB .NETで書かれた拡張メソッド、Moduleでなければなりませんし、Extension属性でマークされ、このような何か:

Public Module BinaryDenary 

    <Extension()> 
    Function ToBinary(ByVal DenaryNumber As Integer) As Integer 
     Dim Binary As String = "" 
     While DenaryNumber > 0 
      If DenaryNumber Mod 2 = 1 Then 
       Binary = 1 & Binary 
      Else 
       Binary = 0 & Binary 
      End If 
      DenaryNumber \= 2 
     End While 
     Return CInt(Binary) 
    End Function 

End Module 

モジュールが同じ名前空間に存在しない場合は、あなたがすべき使用されている名前空間をインポートします。

+0

名前空間とは何ですか?モジュール?クラスをインポートするのと同じ方法でインポートしますか? – Lou

+0

名前空間コードを編成する別の方法です。ここをクリックしてください。[アセンブリと名前空間について](http://msdn.microsoft.com/en-us/library/ms973231.aspx) モジュールは、アセンブリ、それについてここで読む[.NETのモジュールとは何ですか?](http://stackoverflow.com/questions/645728/what-is-a-module-in-net) –

+0

したがって、明確にするために:私は新しいモジュール内の関数を別の名前空間に書き込む必要がありますか?これは別の.vbファイルに入れておく必要がありますか? – Lou