何时何地不能使用泛型

今天看见一篇文章【C#食谱】【面食】菜单1: 何时何地使用泛型 ,总结的很好,我也总结一下,不过是反过来的:何时何地不能使用泛型。
注:以下未特别注明的话,均表示不能对外展现泛型,内部仍然可以使用泛型。
1、控件上,在控件上public一个泛型的属性,意味着窗体设计器无法打开。同样的,在重用的组件上也意味着不能打开设计器 了;
2、WebService上,据我目前所知,目前的WebService规范是不支持泛型的,不管是对外接口,还是返回/传入的数据类型;
3、COM的互操作,COM是不支持泛型的。

解决方案:
在以上的应用中,我们又如何避免泛型带来的麻烦呢?一般你可以:
1、包装泛型类,使其特例化,不再具有泛型的特征。例如:
public sealed class DependencyPropertyCollection : ReadonlyNamedCollection<DependencyProperty>
2、 定义非泛型的接口,将泛型的返回值或参数使用object方式访问,适合COM操作。

欢迎大家补充。
补充:竟然有人说这是垃圾文章,哎,算了,不要丢人了,不要放在首页了。

posted @ 2008-01-28 10:05 编写人生 阅读(1724) 评论(10)  编辑 收藏

  回复  引用  查看    
#1楼 2008-01-28 10:15 | 随风逝去      
楼主,你的文章用firefox看有问题! 上面一部分被挡住了!
  回复  引用    
#2楼 2008-01-28 10:44 | SolidWorks [未注册用户]
恩,我也出现同样的现象,上半部无法显示!
  回复  引用  查看    
#3楼 [楼主]2008-01-28 12:07 | 编写人生      
:) 俺不用Firefox,大概是模板有问题吧,一直用这个就不想换了。
  回复  引用  查看    
#4楼 2008-01-28 12:43 | RexTse      
firefox确实有问题。
  回复  引用    
#5楼 2008-01-28 12:44 | 彭小波 [未注册用户]
是啊。上次我就遇到了。WebService里面不能使用。
  回复  引用  查看    
#6楼 2008-01-28 15:29 | 随风逝去      
我原来那个模板Ie用起来有问题,郁闷!
  回复  引用  查看    
#7楼 2008-01-28 20:08 | Evernory      
现在流行用safari了。
  回复  引用    
#8楼 2008-01-28 22:33 | cf [未注册用户]
垃圾文章。鉴定完毕
  回复  引用  查看    
#9楼 2008-01-29 13:33 | Colin Han      
>> 控件上,在控件上public一个泛型的属性,意味着窗体设计器无法打开。同样的,在重用的组件上也意味着不能打开设计器 了

你是说控件上提供了一个泛型的属性吗? 如下:
public class Test : Control
{
public T Prop { get; set; }
}

其实,你即使暴露一个属性使用了泛型的特例类(比如:Nullable),也会出现问题。但是这个问题仅仅处在C++和J#上。例如:
public class Test : Control
{
public int? Prop { get; set; }
}
  回复  引用  查看    
#10楼 2008-01-29 13:34 | Colin Han      
Firefox 确实有问题,这样很影响别人看你的帖子的热情。:)

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-01-29 09:46 编辑过
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索


相关链接:

历史上的今天:
2005-01-28 不是吧!怎么这样