2011-02-12 34 views
0

如何更改此代碼以使工廠動態。我相信我很接近遠程處理。我不想對工廠進行任何硬編碼,也不想重新編譯。數據庫驅動它。VB.NET動態工廠

Dim genericRule As Rule 
Dim factoryObject As String 

factoryObject = _dal.GetFactoryObject(ruleId) 

'Close, but not quite will keep working on it. 
'Dynamic object creation using remoting to the local computer. 
'Dim mArgs(1) As Object 
'mArgs(0) = ruleid 
'mArgs(1) = pronumber 
'Dim mObj As Object 
'Try 
' mObj = Activator.CreateInstance(Nothing, "DedicatedBilling.RuleFactory." + mFactoryObject, mArgs) 
' mRule = CType(mObj, Rule) 
'Catch ex As Exception 
' mObj = Activator.CreateInstance(Nothing, "DedicatedBilling.RuleFactory.ErrorRule", mArgs) 
' mRule = CType(mObj, Rule) 
'End Try 

Select Case factoryObject 
    Case "DeadHeadEntryRule" 
     genericRule = New DeadHeadEntryRule(ruleId, proNumber) 
    Case "DeadHeadFuelRateRule" 
     genericRule = New DeadHeadFuelRateRule(ruleId, proNumber) 
    Case "DeliveryStatusRule" 
     genericRule = New DeliveryStatusRule(ruleId, proNumber) 

    Case Else 
     genericRule = New ErrorRule(ruleId, proNumber) 
End Select 

回答

0

請不要發表太多的代碼。我什至沒有首先看到你的代碼的重要部分。你不需要列出每條規則,以便明白你的觀點。

無論如何,你想看看Activator.CreateInstanceFrom和Reflection,而不是Remoting。

+0

謝謝你的問題指針。我刪除了無關的代碼。我相信我嘗試過這一點,並且無法弄清楚如何處理新事物沒有超載並需要兩個參數的事實,但那是幾個月前的事實。 – 2011-02-12 22:09:12