デザインに少し問題があります。私は次のようにレート計算機を作成しました:
Public Interface ICalculator
Property PaymentTerm As Double
Function Calculate() As CommissionValues
ReadOnly Property CalculationRule As CalculationRuleEnum
End Interface
Public Interface IFlexibleRateCalculator
Inherits ICalculator
Property TransferRate As Decimal
End Interface
Public Interface IFixedRateCalculator
Inherits ICalculator
Property ContractRate As Decimal
End Interface
Public Interface IRateSettingBase
Property RateType As RateTypeEnum
ReadOnly Property Calculator As ICalculator
End Interface
Public MustInherit Class RateSetting
Implements IRateSettingBase
Public MustOverride ReadOnly Property Calculator() As ICalculator Implements IRateSettingBase.Calculator
私はこのようなことをすることができます:
dim ratevalues as RateValues = RateSetting().Calculator.Calculate()
ものすごく単純。問題は、各タイプの計算機には、Calculate()メソッドが正しく機能するために設定する必要のある独自のプロパティのセットがあることです。だから私は次のように実装する必要があります
FlexibleRateCalculator
Implements IFlexibleRateCalculator
Private mRequestedRate As Decimal
Public Function Calculate() As RateValues Implements ICalculator.Calculate
FixedRateCalculator
Implements IFixedRateCalculator
Private mTransferRate As Decimal
Public Function Calculate() As RateValues Implements ICalculator.Calculate
ジェネリックスと抽象クラスを使用して、特定のタイプの計算機を動的に生成するファクトリパターンを作成するための最良の方法は何ですか?
多くの計算レートが追加され、計算ロジックに必要な独自のパラメーターですべて変更されるため、非常に一般的なソリューションが必要です。これをすばやく実行し、dbを介してこれらのレート計算を制御できるようにしたいと思います。C#またはVB.NetでのFYIの回答は大歓迎です:)よろしくお願いします!