如何更改此代码以使工厂成为动态的。我相信我已经很熟悉远程处理了。我不想要工厂的任何硬编码,也不想重新编译。数据库驱动它。
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发布于 2011-02-13 05:41:35
请不要张贴这么多代码。一开始我甚至没有看到你的代码的重要部分。你不需要列出每一条规则来表达你的观点。
在任何情况下,您都希望查看Activator.CreateInstanceFrom和反射,而不是远程处理。
' Create an instance of the SomeType class that is defined in this assembly.
Dim oh As System.Runtime.Remoting.ObjectHandle = _
Activator.CreateInstanceFrom(Assembly.GetEntryAssembly().CodeBase, _
GetType(SomeType).FullName)
' Call an instance method defined by the SomeType type using this object.
Dim st As SomeType = CType(oh.Unwrap(), SomeType)
st.DoSomething(5)https://stackoverflow.com/questions/4980542
复制相似问题