2013-07-19 5 views
5

저는 함수를 다시 작성하지 않고도 다른 프로젝트로 가져올 수 있도록 이진 정수를 denary로 변환하는 함수로 클래스 라이브러리를 만들려고합니다. 반대의 경우도 마찬가지입니다. 괜찮습니다. 다음은 수업의 일부입니다.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) 

을하지만 수 클래스 내부에 확장 메소드를 작성하지 마라. 이 일을하는 방법이 있습니까? 대단히 중요하지는 않지만 가능한 한 확장 방법을 사용하고 싶습니다. VB .NET에서 작성

답변

12

연장의 방법은 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