繁体   English   中英

Unity-如何为COM Interop DLL注册类型

[英]Unity - How to RegisterType for a COM Interop DLL

我有一个旧的COM Interop dll,我必须将其包含在.Net 4.5.1应用程序中。 该应用程序将Unity用于IoC和DI。

Interop dll具有以下简化功能:

public interface ILegacyInterop
{
    void DoStuff()
}

public interface LegacyInterop : ILegacyInterop
{
}

public class LegacyInteropClass : ILegacyInterop, LegacyInterop 
{
    public LegacyInteropClass();

    public virtual void DoStuff();
}

我已经尝试了以下方法来连接接口,如下所示

container.RegisterType<ILegacyInterop, LegacyInterop>();

container.RegisterType<ILegacyInterop, LegacyInteropClass>();

container.RegisterType<LegacyInterop, LegacyInteropClass>();

都不起作用。

第一个选项在运行时给出以下错误:

InvalidOperationException-当前类型LegacyInterop是接口,无法构造。 您是否缺少类型映射?

第二个和第三个选项在生成时产生以下错误:

无法嵌入互操作类型“ LegacyInteropClass”。 请改用适用的界面。

我尝试做的事情实际上可能吗? 如果是这样,怎么办?

我可以通过实例化LegacyInterop来使Interop正常工作

我已经弄清楚了在Interop类型的帮助下无法嵌入

有问题的Interop参考需要Embed Interop Assembly设置为False

然后是container.RegisterType<ILegacyInterop, LegacyInteropClass>(); 作品

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM