为了简化我的问题,我会尽量简短:
我正在使用 Unity 的专业版,并且我有 2 个 DLL:
- .NET 3.5 程序集(充当 COM 客户端)
- .NET 4.0 程序集(具有通过 COM 公开的接口)
3.5 使用 COM 与 4.0 一起工作。在 Windows 应用程序中使用 3.5 程序集可以正常工作,它通过 Type.GetTypeFromCLSID() 或 Type.GetTypeFromProgID() 使用 SxS 加载 4.0 dll(我已经通过 SxStrace 确认),并且可以很好地使用它的功能。(Windows 应用程序通过清单提到它依赖于 4.0 DLL,我没有注册 COM DLL。)
我正在尝试在 Unity 中使用 .NET 4.0 DLL。显然我不能直接使用它,因为目前 Unity 使用的 Mono 版本最多只支持 3.5,因此我创建了 3.5 程序集作为我的中间人。我可以很好地统一使用 3.5 程序集,但是我之前提到的任何一种 Type 方法都会抛出 NotImplementedException(s),因为显然 Unity(或者更确切地说,Mono)不支持它们,所以我在失利。
有任何想法吗?