首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VB.NET动态工厂

VB.NET动态工厂
EN

Stack Overflow用户
提问于 2011-02-13 04:48:49
回答 1查看 407关注 0票数 0

如何更改此代码以使工厂成为动态的。我相信我已经很熟悉远程处理了。我不想要工厂的任何硬编码,也不想重新编译。数据库驱动它。

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-13 05:41:35

请不要张贴这么多代码。一开始我甚至没有看到你的代码的重要部分。你不需要列出每一条规则来表达你的观点。

在任何情况下,您都希望查看Activator.CreateInstanceFrom和反射,而不是远程处理。

代码语言:javascript
复制
' 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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4980542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档