我在dll文件中定義了一些類。這些以com api的形式出現。在VB.Net中動態調用方法
我想創建一個類的對象動態和設置該對象的某些屬性。
當我手動設置的屬性,它的工作原理,但是當我嘗試調用使用反射同它給人的錯誤
對象不匹配目標類型。
以下是我的代碼
Private Sub SetObjectValue(ByVal SelectedObject As SAPbobsCOM.BoObjectTypes, ByVal ClassName As String, ByVal FieldName As String, ByVal SetValue As String, ByVal KeyValue As String)
Dim oObject As Object
Dim myAssembly As Reflection.Assembly = Reflection.Assembly.LoadFrom("interop.sapbobscom.dll")
Dim myType As Type = myAssembly.GetType(ClassName)
Dim myMember() As MemberInfo = myType.GetMember(FieldName)
Dim myProperty As PropertyInfo = CType(myMember(0), PropertyInfo)
Dim myMethod As MethodInfo = myProperty.GetSetMethod
oObject = oCompany.GetBusinessObject(SelectedObject)
oObject.GetByKey(KeyValue)
myProperty.SetValue(oObject, CDbl(SetValue), Nothing)
End Sub
它給人的錯誤時setValue方法被調用。相反,如果我用這個像以下正常工作:
oObject.CreditLimit = 129
oObject.Update
哪裏CREDITLIMIT是給定類的屬性,以及更新,我有打電話,該值設置之後,這樣的方法的價值在底層數據庫中更新。
同樣,GetByKey用於從基礎數據庫中檢索對象的值,其中必須傳遞主鍵字段的值。
由於有多個類,每個類都有很多不同的屬性,因此動態調用它們將有很大幫助。
感謝 拉胡爾·哈因
只是試圖做什麼卡斯帕在這裏建議。它給出了一個錯誤說 - 找不到會員。 (異常來自HRESULT:0x80020003(DISP_E_MEMBERNOTFOUND))
拉胡爾
它完成。我使用vbLet而不是vbSet,併成功完成。
感謝 拉胡爾
有什麼CREDITLIMIT屬性的類型? – 2009-01-02 19:19:47