단위 변환 모듈에서 작업하고 있습니다. 여기 CodeProject뿐만 아니라 여러 좋은 아이디어를 발견했습니다. 내 코드에서 http://www.codeproject.com/KB/cs/Unit_Conversion_Sample.aspx 에서이 C# 코드와 매우 유사 보이는 당신은 아마 내가 프로그래밍 : I는 단위 기본 클래스를 생성 한측정 단위 변환 - VB.net의 클래스 구조
나는 각 단위 유형을 만들 상속에 아주 새로운 해요 있음을 수집합니다 다음 .
Public Class Units
Private _unitvalue As Double
Private _unittype As [Enum]
Public Sub New(UnitValue As Double, UnitType As [Enum])
_unitvalue = UnitValue
_unittype = UnitType
End Sub
Public Property UnitValue() As Double
Get
Return _unitvalue
End Get
Set(value As Double)
_unitvalue = value
End Set
End Property
Public Property UnitType() As [Enum]
Get
Return _unittype
End Get
Set(value As [Enum])
_unittype = value
End Set
End Property
Public Overrides Function ToString() As String
Return String.Format("{0} {1}", UnitValue.ToString(), UnitType.ToString())
End Function
End Class
이 클래스를 상속하여 단위 변환 기능이 포함 된 단위를 만들기 시작합니다.
Public Class WeightUnit
Inherits Units
Enum WeightSym
'Pounds
Lbs
'Kilograms
Kg
End Enum
Sub New(UnitValue As Double, UnitType As WeightSym)
MyBase.New(UnitValue, UnitType)
End Sub
Public Function Convert(toUnit As WeightSym) As WeightUnit
'Base Weight Unit is Lbs
Dim fromUnit As WeightSym
fromUnit = UnitType
Dim Lbs As Double = 0
Select Case fromUnit
'Standard
Case WeightSym.Lbs
Lbs = UnitValue
Case WeightSym.Kg
Lbs = UnitValue * 2.2046226
End Select
Dim toVal As Double = 0
'to unit based on Lbs
Select Case toUnit
'Standard
Case WeightSym.Lbs
toVal = Lbs
Case WeightSym.Kg
toVal = Lbs * 0.4535924
End Select
Return New WeightUnit(toVal, toUnit)
End Function
End Class
길이, 압력 등 여러 가지 단위 유형을 만들어야합니다. 한 가지 문제를 제외하고는 잘 작동합니다. UnitType을 변경하고 UnitValue를 자동으로 업데이트 할 수 있어야합니다. Unit 객체의 값이 1이고 Inch 유형이 있고 유형이 Cm으로 변경되면 값은 2.54로 업데이트됩니다.
이런 식으로 보았습니다.이 예제를 보았습니다.하지만 차이점은 기본 클래스에 Covert 함수를 지정할 수 없다는 것입니다. 왜냐하면 새로 만든 UnitClass마다 변경되기 때문입니다.
Public Property UnitType() As [Enum]
Get
Return _unittype
End Get
Set(value As [Enum])
_unittype = value
_unitvalue = Convert(value).UnitValue
End Set
End Property
나는 속성 UNITTYPE 재정의를 만들고 내가 만든 각 UnitClass에 UNITTYPE위한 새로운 재정의 속성을 만드는 시도,하지만 난 그 일을 가져 오지 못했습니다.
모든 의견을 보내 주시면 감사하겠습니다. 감사합니다.
나는이 작업을 수행하는 방법을 발견,하지만 난 충분히 명성을 8 시간 이상하지 자기 답이없는 수 있기 때문에 아직. 간단히 말해, 코드를 조금 재정렬하고 부울을 반환하는 Function을 True 또는 False로 사용했습니다.이 함수에서 UnitValue =를 변환 된 UnitValue로 설정 한 다음 UnitType =을 새로 선택하는 유형으로 설정했습니다. 내가 할 수있을 때 코드를 게시 할 것입니다. – GetFuzzy