Указанная запись не может быть сопоставлена с классом управляемых значений

#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;