C#COM vaiable在当前上下文中不存在

C#COM vaiable在当前上下文中不存在,c#,c++,dynamic,com,C#,C++,Dynamic,Com,我在C#中有一个COM对象: C#中的myClass.GetMyPointer()正在返回动态类型。在定义COM对象的原始代码中,MyCal.G.MyPosithCype返回指向C++中的接口IPClass的指针。p> 当我测试我的C#dll时,我无法获得我的bool。VS总是说myBool在当前上下文中不存在。但总要做些什么。我就是无法找回返回值。我曾试图暂时停止从C#收集垃圾,但没有任何效果 有人有什么建议吗 试试这个,看看它会返回什么: System.Diagnostics.Debug.W

我在C#中有一个COM对象:

C#中的myClass.GetMyPointer()正在返回动态类型。在定义COM对象的原始代码中,MyCal.G.MyPosithCype返回指向C++中的接口IPClass的指针。p> 当我测试我的C#dll时,我无法获得我的bool。VS总是说myBool在当前上下文中不存在。但总要做些什么。我就是无法找回返回值。我曾试图暂时停止从C#收集垃圾,但没有任何效果


有人有什么建议吗

试试这个,看看它会返回什么:

System.Diagnostics.Debug.WriteLine("calling DoSomething()");
System.Diagnostics.Debug.WriteLine((myPointer.DoSomething()).GetType().Name);
System.Diagnostics.Debug.WriteLine("finished call to DoSomething()");

请检查以下答案:myBool不是“COM变量”。当您尝试调试优化代码时,会从调试器获得此类消息。这将删除局部变量。仅在调试配置中生成的调试代码。第二行打印出正确的类型,但myBool在当前上下文中不存在……好的,问题在于强制转换。返回的变量必须是正确的类型。如果返回的类型是bool,则需要将myPointer.DoSomething()强制转换为(Boolean)myPointer.DoSomething();如果返回的类型是字符串,则需要将其强制转换为(字符串)myPointer.DoSomething()。。。
System.Diagnostics.Debug.WriteLine("calling DoSomething()");
System.Diagnostics.Debug.WriteLine((myPointer.DoSomething()).GetType().Name);
System.Diagnostics.Debug.WriteLine("finished call to DoSomething()");