#c# #dynamic #com #vb6 #createinstance
#c# #динамический #com #vb6 #createinstance
Вопрос:
У меня есть проект vb6 «PROJVB6» с классом «CLASSVB6» с этим содержимым:
...
Public Type ActualParametersType_DOCUMENTI
Codice As Variant
Numreg As Variant
End Type
...
Private Gvar_ActualParameters As ActualParametersType_DOCUMENTI
...
Public Property Let ActualParameters(RHS As ActualParametersType_DOCUMENTI)
On Error Resume Next
Gvar_ActualParameters = RHS
End Property
Public Property Get ActualParameters() As ActualParametersType_DOCUMENTI
On Error Resume Next
ActualParameters = Gvar_ActualParameters
End Property
У меня есть другой проект на c #, который не ссылается на проект vb6, но нуждается в его использовании.
Я попытался с:
var iet = Type.GetTypeFromProgID("PROJVB6.CLASSVB6");
dynamic CalledProgram = Activator.CreateInstance(iet);
И это работает.
Но если я попытаюсь получить свойство ActualParameters с помощью этого:
dynamic a = CalledProgram.ActualParameters();
я получаю эту ошибку:
Указанная запись не может быть сопоставлена с классом управляемых значений.
Как я могу получить доступ к ActualParameter для заданных значений Codice или Numreg без генерации ошибки?
Спасибо
Ответ №1:
Проблема ActualParameters
в том, что это свойство, а не метод.
Так что это было бы правильно:
// dynamic a = CalledProgram.ActualParameters();
// ^^ wrong
dynamic a = CalledProgram.ActualParameters;