泛型的困惑 我在webservice里通过业务层dll访问数据库获得了一个泛型,现在我给客户端数据的时候是直接给他这个泛型对象,还是将这个泛型转为datatable,还是我自己按照业务层这个泛型类的属性自己写个类,然后把这个泛型赋予我这个类获得我自己的泛型再返回给客户端? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没有什么注意事项么,如果我直接返回个dll的泛型对象,我感觉我这个webservice就没什么用了啊 class typeinfo{int id;string typename;public int Id{get;set}public string Typename{get;set}}//将实体添加到范型List<typeinfo> list=new List<typeinfo>();typeinfo type1=new typeinfo(1,"aa");typeinfo type2=new typeinfo(2,"bb");typeinfo type3=new typeinfo(3,"cc");list.add(type1);list.add(type2);list.add(type3);//取范型数据到实体foreach(typeinfo type in list){if(type.id==1){typeinfo type1=new typeinfo();type1.id=type.id;type1.typename=type.typename;}} 如果我想把这个list直接赋予给一心的typeinfo呢? 如果我想把这个list直接赋予给一心的List <typeinfo>呢? 如果我想把这个list直接赋予给一心的List <typeinfo>呢? 这需要显示转换了,因为你的list不是强类型化得 ms不保证安全,所以需要你自己逐个转换 不幸地是WebService不直接支持泛型,WCF有效支持但使用相当麻烦...你必须重新包装... 采用JSON格式也可以,,方便,,,高效。。 你当然不可能能够返回类型不确定的泛型,但是你可以返回类型参数确定的泛型。泛型就是类型的函数,其结果仍然是类型。因此,你可以返回List<MyUserType>这样类型的结果,尖括号中的类型必须是确定的。不过,webService最好给各种客户端语言平台使用,使用.net的泛型实际上有点“风险”,例如可能就不确定php会如何使用它。我的习惯是,将输出定义为数组,例如 MyUserType[]。而从List<>转换为数组只要使用它的ToAray()方法就可以了。我记得在vs2008以后,默认地它自动生成的webService客户端代理可以自动转换为数组定义,而不是在客户端使用泛型。尽管如此,我还是喜欢在设计服务端的输出类型时直接手动定义为数组。 如果不是有什么及其复杂的“技术”必须序列化,你就没有必要序列化。webService归根结底是要把数据序列化,然后才传递给客户端的。如果你手动序列化,然后再让webService给你把序列化的结果再序列化一遍,然后在客户端也是连续两个反序列化,这显然是多此一举。就直接传递强类型对象就可以了。 上传图片 到 其它服务器,高手进,在线等... 三目表达式嵌套的问题 dataList 里的droplistdown事件 2.0中自带的用户验证 按纽响应确认键 请教:DataGrid数据的删除与修改 用Context.Handler传递参数的不解问题。 DateGrid的模版列问题? 未能找到依赖项 运行没错 谁能帮我看看整个config文件呀?谢谢! 请教一个关于怎样在后台用JS表示GRIDVIEW中TEXTBOX的问题 谢谢大家了 FCKeditor工具栏显示选择问题,太急了,万谢!
{
int id;
string typename;
public int Id{get;set}
public string Typename{get;set}
}
//将实体添加到范型
List<typeinfo> list=new List<typeinfo>();
typeinfo type1=new typeinfo(1,"aa");
typeinfo type2=new typeinfo(2,"bb");
typeinfo type3=new typeinfo(3,"cc");
list.add(type1);
list.add(type2);
list.add(type3);
//取范型数据到实体
foreach(typeinfo type in list)
{
if(type.id==1)
{
typeinfo type1=new typeinfo();
type1.id=type.id;
type1.typename=type.typename;
}
}