我写了个调用WCF的COM+,结果很多警告,请教一下是怎样解决?
我写了个调用WCF的COM+(就是让老VB6调用的),警告内容都是说我的定义的 list<t>有问题,不知道怎样解决好,我的WCF返回值是LIST<t>,我搜了一下GOOGLE,含有我的警告的网叶只有 4个,我在想,就是既然LIST<t>提出警告,那我就用DICTIONARY<K,V>吧,好像这个作为返回值是,WCF是允许的吧,请教一下高手,我找不到答案
警告内容如下
类型库导出程序在处理“bhcom.ServiceReference.ProddepinfoList, bhcom”时发出警告
。警告: 类型库导出程序遇到从泛型类派生并且未标记为 [ClassInterface(ClassInterfac
eType.None)] 的类型。无法公开这种类型的类接口。请考虑用 [ClassInterface(ClassInt
erfaceType.None)] 标记该类型,并使用 ComDefaultInterface 属性向 COM 公开某个显式
接口作为默认接口。
类型库导出程序在处理“bhcom.ServiceReference.UploadthegjdsubList, bhcom”时发出
警告。警告: 类型库导出程序遇到从泛型类派生并且未标记为 [ClassInterface(ClassInte
rfaceType.None)] 的类型。无法公开这种类型的类接口。请考虑用 [ClassInterface(Clas
sInterfaceType.None)] 标记该类型,并使用 ComDefaultInterface 属性向 COM 公开某个
显式接口作为默认接口。
类型库导出程序在处理“bhcom.ServiceReference.MyInvMainList, bhcom”时发出警告。
警告: 类型库导出程序遇到从泛型类派生并且未标记为 [ClassInterface(ClassInterfaceT
ype.None)] 的类型。无法公开这种类型的类接口。请考虑用 [ClassInterface(ClassInter
faceType.None)] 标记该类型,并使用 ComDefaultInterface 属性向 COM 公开某个显式接
口作为默认接口。
COM+的代码如下
public string invokgetproddep(ref string[] avar, ref string[] bvar, ref string[] cvar, ref decimal[] dvar, ref string[] evar, ref DateTime[] fvar, ref Int32[] gvar, string addr,)
{
EndpointAddress objAddress = new EndpointAddress(addr + "/Service1.svc");
ServiceReference.Service1Client m_proxy = new ServiceReference.Service1Client("WSHttpBinding_IService1", objAddress);
int i = 0;
ServiceReference.ProdList mylistprod = new ServiceReference.ProdList();
try
{
mylistproddepdc = m_proxy.GetProddepinfo();
foreach (ServiceReference.proddatacontract proddc in mylistprod)
{
avar[i] = proddc.a;
bvar[i] = proddc.b;
cvar[i] = proddc.c;
dvar[i] = proddc.d;
evar[i] = proddc.e;
fvar[i] = proddc.f;
gvar[i] = proddc.g;
i++;
}
return "succ";
}
catch (FaultException<ServiceReference.GetProddepinfoFault> ex)
{
System.Windows.Forms.MessageBox.Show("发生错误:" + ex.Detail.Operation + " 错误原因是:" + ex.Detail.ProblemType);
m_proxy.Abort();
return "fail";
}
catch (CommunicationException ex)
{
System.Windows.Forms.MessageBox.Show("错误发生:" + ex.ToString());
m_proxy.Abort();
return "fail";
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show("错误发生:" + ex.ToString());
m_proxy.Abort();
return "fail";
}
finally
{
if (m_proxy != null)
m_proxy.Close();
}
}