【发布时间】:2009-04-07 06:02:03
【问题描述】:
在 C# 中,我在互操作类(Connection,用 VB6 编写)上调用一个函数,它本身返回一个普通对象(System)。然后我也调用了该对象 (InitialiseData) 上的一个函数(即使编译器不知道它)。
var isInitialised = Connection.System.InitialiseData(path);
问题是,因为 System object 只返回一个 Object,我得到编译错误“无法解析符号”。我明白为什么,但同样的事情在 VB.NET 中也能正常工作:
Dim isInitialised As Boolean = Connection.System.InitialiseData(path)
大概 VB.NET 正在后台做一些事情,允许一种隐式后期绑定,而 C# 没有?有没有办法让 C# 以同样无知的方式编译?
事实上,在这种情况下,我似乎能够通过首先将 Object 转换为显式互操作类型来解决它:
var system = (QLO.System)Connection.System;
var isInitialised = system.InitialiseData(path);
但我仍然对我无法能够转换为类型但仍想在其上调用函数的情况的答案感兴趣。如果这是一个愚蠢的问题,请原谅我,我才刚刚开始从 VB.NET 迁移到 C#...谢谢!
【问题讨论】: