COM互操作,C#,Visual Studio 2010->;嵌入互操作类型
本文关键字:互操作 类型 gt 2010- Visual Studio COM | 更新日期: 2023-09-27 18:22:32
我的C#程序通过Nco3(sapnco.dll)访问SAP。该程序还需要与Delphi配合使用。我的一些方法从sapnco.dll返回类型:
public void IRfcTable table(...) { ... }
在Delphi中,这种方法显示为
function table(...): IUnknown { ... }
我想这个IUnknown
是因为我的TLB不包括sapnco.dll;嵌入互操作类型=true";在Visual Studio中,但随后出现此错误:
错误Interoptypen aus Assembly";C: ''"können没有被定义为ImportedFromTypeLibAttribute属性或PrimaryInteropAssemblyAttribute属性属性。c: 。。。''sapnco.dll
(由于缺少某些属性,无法嵌入互操作类型)。
这是正确的路吗?如果是,将这些属性放在哪里?
sapnco.dll是一个.NET dll,因此它不公开给COM,因此您不能在COM环境中直接使用此类型。解决问题的方法是创建一个库,将sapnco.dll封装在COM公开的类中:
例如:
[ComVisible(true)]
public interface IComRfcTable
{
public void DoSomething();
}
[ComVisible(true)]
public class ComRfcTable : IComRfcTable
{
private _rfcTable; // object to wrap
public ComRfcTable(IRfcTable rfcTable)
{
_rfcTable = rfcTable
}
public void DoSomething()
{
_rfcTable.DoSomething();
}
}
然后你的方法必须像这样实现:
public IComRfcTable table(...) { ... }