Code Bye

诚心请教:C#生成dll加了个结构体生成出错

目的:对方webservice函数参数为结构体数组,用C#调用拆解为单结构体参数,生成dll供第三方程序(PB)调用
//
先用窗体按钮测试了C#调用对方webservice方法,得到成功返回值后,就重新建了C#类库准备生成dll。
开始的Class1.cs是这样写的:
//
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;    //该引用必须
namespace shsapd1 //命名空间
{
[Guid(“282D75B6-51F4-480F-8F55-8AFC4CA49471”)]   //利用工具->创建GUID->生成器5随机生成
public interface CallParamers
{
[DispId(1)] //接口方法的绑定号
string PBSAP( ref ws1.ZSSD_JHDGB jhdsj);
}
[Guid(“7A61996C-2C74-4794-84E2-57EAE4D954A0”)]   //利用工具->创建GUID->生成器5随机生成
[ClassInterface(ClassInterfaceType.None)]
public class Class1 : CallParamers
{
public string PBSAP( ref ws1.ZSSD_JHDGB jhdsj)
{
ws1.ZSSD_JHDGB[] sz1;
sz1 = new ws1.ZSSD_JHDGB[1]; //结构数组参数定义
sz1[0] = jhdsj;
string uname, upass;
uname = “xxx”;
upass = “xxx”;
System.Net.NetworkCredential c = new System.Net.NetworkCredential(uname, upass);
ws1.SI_03AA6_SNZYXT2ERP_JHDGBService s = new ws1.SI_03AA6_SNZYXT2ERP_JHDGBService();
s.Credentials = c; //
string rs1;
string rs2 = s.SI_03AA6_SNZYXT2ERP_JHDGB(ref sz1, out rs1);
return rs2;
}
}
}
生成dll成功,用regasm注册成功;PB调用这个COM组件也成功,但引用定义函数PBSAP时显示Error calling external object function PBSAP…错误提示说明找到到函数名PBSAP,但引用失败……
不知道是不是结构体参数定义问题,对方的结构体ZSSD_JHDGB引用到C#后每个成员都对应多了个Field后缀的私有成员:

就想着本人定义个正常的结构作为函数参数,然后一一赋值给对方webservice结构体的成员,Class1.cs代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;    //该引用必须
namespace shsapd1 //命名空间
{
[Guid(“47916D69-EDC6-4275-AFE6-CDC5C22C40C1”)]   //利用工具->创建GUID->生成器5随机生成
public struct sapstrdata
{
public string vbeln;
public string posnr;
public string lfimg;
public string wadat;
public string wadat_ist;
public string data01;
public string data02;
public string data03;
public string data04;
public string data05;
public string data06;
public string data07;
public string data08;
public string data09;
public string data10;
}
[Guid(“282D75B6-51F4-480F-8F55-8AFC4CA49471”)]   //利用工具->创建GUID->生成器5随机生成
public interface CallParamers
{
[DispId(1)] //接口方法的绑定号
string PBSAP( ref sapstrdata jhdsj);
}
[Guid(“7A61996C-2C74-4794-84E2-57EAE4D954A0”)]   //利用工具->创建GUID->生成器5随机生成
[ClassInterface(ClassInterfaceType.None)]
public class Class1 : CallParamers
{
public string PBSAP( ref sapstrdata jhdsj)
{
ws1.ZSSD_JHDGB[] sz1;
sz1 = new ws1.ZSSD_JHDGB[1]; //结构数组参数定义
ws1.ZSSD_JHDGB sj;
sj = new ws1.ZSSD_JHDGB();
sj.VBELN = jhdsj.vbeln;
sj.POSNR = jhdsj.posnr;
//sj.xx = jhdsj.xx…;
sz1[0] = sj;
string uname, upass;
uname = “xxx”;
upass = “xxx”;
System.Net.NetworkCredential c = new System.Net.NetworkCredential(uname, upass);
ws1.SI_03AA6_SNZYXT2ERP_JHDGBService s = new ws1.SI_03AA6_SNZYXT2ERP_JHDGBService();
s.Credentials = c; //
string rs1;
string rs2 = s.SI_03AA6_SNZYXT2ERP_JHDGB(ref sz1, out rs1);
return rs2;
}
}
}
但这样的代码保存没问题,一生成就出错;除了生成失败的提示,VS2010没有给出代码中任何的错误位置……
问一下各位达人,到底是那里出的问题?
解决方案

20

不懂,帮顶!

20

不懂  本人一般很少用 都是用类

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明诚心请教:C#生成dll加了个结构体生成出错