2

我有一个使用 VB6 构建的 OCX 文件,我想从 C# 访问它。所以我在 C# 项目中添加了对 OCX 的引用,然后添加了代码以从 OCX 实例化一个对象:

    var blah = new Blah();

这编译得很好,没有错误或警告,而且它似乎像我预期的那样工作——我可以调用 blah 对象上的方法,它们似乎做了我期望它们做的事情。但是,如果我转到解决方案中的 ReSharper / Inspect / Code Issues,ReSharper 会抱怨上面引用的行是“C# Compiler Error”,说“Cannot access internal constructor 'BlahClass' here”。

由于它声称这是一个 C# 编译器错误,但它似乎编译(实际上工作)很好,我猜这只是 ReSharper 本身的问题。但是,我对此很陌生,我想确定一下。也许我正在做的不是从 OCX 实例化对象的正确方法,或者类似的东西?

我正在使用 VS2012 Professional 和 ReSharper 7.1.3。

4

1 回答 1

0

C# 编译器查看该 coe 并看到“动态”代码的调用(其对象在执行开始后可能具有可用的新方法/属性的代码),因此无法确定任何特定方法/属性在编译时存在. Resharper 试图通过找出可能在运行时失败的情况来提供更多帮助。它可能正在使用该类的过时描述(类型库)来做出决定。或者,该类的描述与代码的实际功能不同步。仅根据您发布的内容很难判断这是好事还是坏事。如果“它有效”,这似乎是一件好事;但这是非常主观的——它可能是一个等待发生的问题。

我认为这是可疑的,可能会联系供应商以获得保证,那里没有潜伏的东西会导致以后出现问题。

于 2013-08-15T16:02:54.480 回答