指定的记录无法映射到托管值类

Luc*_*oli 7 c# vb6 com dynamic 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
Run Code Online (Sandbox Code Playgroud)

我有另一个 C# 项目,它没有引用 vb6 项目,但需要使用它。我尝试过:

var iet = Type.GetTypeFromProgID("PROJVB6.CLASSVB6");
dynamic CalledProgram = Activator.CreateInstance(iet);
Run Code Online (Sandbox Code Playgroud)

它有效。但是如果我尝试使用以下方法获取 ActualParameters 属性:

dynamic a = CalledProgram.ActualParameters(); 
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

指定的记录无法映射到托管值类。

我怎样才能访问ActualParameter以获取Codice或Numreg的设置值而不生成错误?

谢谢

Rob*_*ner 2

问题是ActualParameters属性而不是方法。

所以这是正确的:

// dynamic a = CalledProgram.ActualParameters();
//                                           ^^ wrong
dynamic a = CalledProgram.ActualParameters; 
Run Code Online (Sandbox Code Playgroud)