在我的第一个SAP B1项目中,我将SAPbobsCom.dll
的嵌入互操作类型设置为True。这是一个" DI API"附加项目,即无需从SAP B1内部运行附加组件。我创建的代码编译得很好,我觉得我没事。
但是,出现了一个新的要求,它必须在SAP B1中运行。简而言之,我意识到为了打包附加组件SAP b1工具需要我将Embed Interop Types设置为False。
然后我在SAP论坛中发现了一些文章,表明建议将互操作类型设置为false,否则会导致问题"。但没有解释为什么或问题会是什么。我想知道这是一个特定于SAP类,COM或其他问题的问题。为什么该设置会改变类的行为方式?
当我尝试使用设置为False的Embed Interop Types重新编译加载项时,许多使用SAPbobsCOM类的语句都失败了。错误的形式如下:不能隐式转换类型' xyz'到了#abc'。存在显式转换(您是否错过了演员?)
例如,为了得到声明:
objRecSetDN = SapObjects.oCompany.GetBusinessObject(BoObjectTypes.BoRecordset)
要编译,我必须将其更改为:
objRecSetDN = (SAPbobsCOM.Recordset)SapObjects.oCompany.GetBusinessObject(BoObjectTypes.BoRecordset)
我不得不改变:
string CheckSend = RS.Fields.Item("U_Send").Value;
为:
string CheckSend = (string)RS.Fields.Item("U_Send").Value;