2013-07-19 13 views
5

Próbuję utworzyć bibliotekę klasy z funkcją konwersji liczb całkowitych binarnych na denary i na odwrót, tak, że mogę zaimportować ją do innego projektu bez konieczności przepisywania tej funkcji. Działa dobrze, oto część klasy:VB.NET - Rozszerzenie funkcji w klasie?

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 

Przetestowałem to w ramach projektu i działa dobrze.

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

jednak - głównie ze względów estetycznych - Chciałbym, aby móc używać go jak metodę rozszerzenia, tak, że mogę wziąć zmienną i wykonaj następujące czynności:

NormalInt.ToBinary(3) 

ale mogę nie pisz metod rozszerzenia wewnątrz klasy. Czy jest jakiś sposób na zrobienie tego? Nie jest to bardzo ważne, ale lubię stosować metody rozszerzeń, gdzie mogę.

Odpowiedz

12

metodę rozszerzenia napisane w VB .NET, musi być w Module i być oznaczone atrybutem Extension, coś takiego:

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 

Jeśli moduł nie jest w tej samej przestrzeni nazw, należy zaimportuj przestrzeń nazw, w której jest używana.

+0

Co to jest obszar nazw? Moduł? Czy importuję go w ten sam sposób, w jaki importuję klasę? – Lou

+0

Przestrzenie nazw to inny sposób na uporządkowanie kodu, przeczytaj o tym tutaj [Rozumienie złożenia i przestrzeni nazw] (http://msdn.microsoft.com/en-us/library/ms973231.aspx) Moduł jest logicznym zbiorem kodu wewnątrz zespół, przeczytaj o tym tutaj [Co to jest moduł w .NET?] (http://stackoverflow.com/questions/645728/what-is-a-module-in-net) –

+0

Więc, aby wyjaśnić: I powinien napisać funkcje w ramach nowego modułu w osobnej przestrzeni nazw? A czy powinien to być osobny plik .vb? – Lou

Powiązane problemy