私は単位変換モジュールで作業しています。私はCodeProjectだけでなく、ここでいくつかの良いアイデアを見つけました。私のコードはこのC#コードと非常によく似ていますhttp://www.codeproject.com/KB/cs/Unit_Conversion_Sample.aspx 以下から、私はかなりプログラミングの面白さがわかります:)測定単位変換 - VB.netでのクラスの構造
私は各ユニットタイプの作成を継承するUnitsベースクラスを作成しました。
次に、このクラスを継承し、ユニット変換関数を含むユニットの作成を開始します。
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
長さ、圧力など、いくつかの異なるユニットタイプを作成する必要があります。これは1つの問題を除いてうまくいきます。 UnitTypeを変更して、UnitValueを自動的に更新したいと思います。 Unitオブジェクトの値が1でInchの型があり、型がCmに変更された場合、値は2.54に更新されます。
このような例がありますが、ここでの例は分かりましたが、ここでの違いは、私が作成する新しいユニットクラスごとに変更されるため、ベースクラスでCovert関数を指定できません。
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のための新しいオーバーライドプロパティを作成しようとしたが、私はそれが仕事を得ることができませんでした。
ご意見をいただければ幸いです。 ありがとう!
...単位の変換のための他のアイデアを聞くことに興味があると思いまだ。簡潔にするために、私のコードを少し並べ替えて、ブールTrueまたはFalseを返す関数を使用しました。その関数では、UnitValue =を変換されたUnitValueに設定し、UnitType =を新しく選択するタイプに設定しました。できるだけコードを投稿します。 – GetFuzzy