我有一个使用VB6构建的OCX文件,我想从C#访问。所以我在C#项目中添加了对OCX的引用,然后添加了代码来实例化OCX中的对象:
var blah = new Blah();
这编译得很好,没有错误或警告,它似乎按照我的预期工作 - 我可以调用blah对象上的方法,它们似乎做了我期望他们做的事情。但是,如果我在解决方案中使用ReSharper / Inspect / Code Issues,ReSharper会抱怨上面引用的行是“C#编译器错误”,说“无法在这里访问内部构造函数'BlahClass'。”
因为它声称它是一个C#编译器错误,但它似乎编译(并且实际上工作)就好了,我猜这只是ReSharper本身的一个问题。但是,我对此很陌生,我想确定一下。也许我正在做的不是从OCX实例化对象的正确方法,或类似的东西?
我正在使用VS2012 Professional和ReSharper 7.1.3。
答案 0 :(得分:0)
C#编译器查看那个coe并看到“动态”代码的调用(其对象可能在执行开始后具有新方法/属性的代码),因此无法确定任何特定方法/属性是否编译时那里。 Resharper试图找出可能在运行时失败的情况,试图帮助更多。它可能正在使用该类的过时描述(类型库)来做出决定。或者,该类的描述与代码实际执行的内容不同步。根据你发布的内容来判断这是好事还是坏事很难说清楚。如果“它有效”,它似乎是一件好事;但这是非常主观的 - 这可能是一个等待发生的问题。
我会认为这是可疑的,也许可以联系供应商以获得保证,那里潜伏的东西不会在以后引起问题。