问题描述
我正在项目A中工作。有一个对项目B的引用(同一解决方案的一部分),其中包含以下扩展方法:
public static class Extensions
{
public static IDictionary<string,Component2> GetAllComponentsByName(this AssemblyDoc assyDoc) =>
((object[])assyDoc.GetComponents(false)).Cast<Component2>().ToDictionary(c => c.Name2,c => c);
}
像这样在项目A的代码中使用它时
public void DoSth(AssemblyDoc assyDoc)
{
var x = assyDoc.GetAllComponentsByName();
var y = x.OrderBy(kv => kv.Key).ToArray();
}
然后,OrderBy
查询(更确切地说是由于ToArray
导致的枚举)抛出EntryPointNotFoundException
。
但是,如果我将Extensions
类放在项目A中,则可以正常工作。
您知道为什么会这样吗?知道我能做什么才能使用项目B中的扩展方法吗?
(此解决方案中的其他项目也需要使用该扩展方法,并且我不想重复代码。)
以下是有关所用类的一些信息:
- 我正在编写SolidWorks插件;这是通过使用SolidWorks API以某种方式编写类库来完成的。 SolidWorks API程序集是使用nuget安装的。
- SolidWorks是用C ++编写的。
- SolidWorks API对象是COM对象。
AssemblyDoc
和Component2
就是这样的COM对象。 - 方法
AssemblyDoc.GetComponents(bool)
返回dynamic
,但是从文档中我知道实际返回的对象是object[]
,其中每个项目代表一个Component2
。这就是为什么我首先转换为object[]
然后使用Cast<Component2>
的原因。 - 方法
Component2.Name2
返回一个string
。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)