2011-02-12 36 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