关于泛型,这个不知道该怎么写,请高人指点下,谢谢!

WOWER2010_13 2010-09-26 11:03:36
做了个自定义控件,要用到泛型。
其中有一段通用的代码,只是调用的泛型类不同。比如 List<tbNews> , List<tbAdmin> 之类的。

我想这样写:

public class UserControl<T> : Control where T:class,new()


这样写的话,调用时就可以直接传不同的泛型类的结果进去了。但是这样我在界面上引用自定义控件,却总是出一堆问题。

本来工具箱中的 UserControl 都变成了 UserControl`1 。

不能正常运行了。



请高人指点下,我该怎么做呢?


部分源代码:

public class UserControl : Control
{
protected override void Render(HtmlTextWriter writer)
{
writer.Write(pager);
base.Render(writer);
}

//就是这里,要调用不同的泛型类。写重载的话又太麻烦冗余了。。
public List<tbNews> bind(List<tbNews> list)
{
}
}
...全文
167 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
majic2008 2010-09-26
  • 打赏
  • 举报
回复
WOWER2010_13 2010-09-26
  • 打赏
  • 举报
回复
万分感谢!!激动啊
WOWER2010_13 2010-09-26
  • 打赏
  • 举报
回复
@10L 非哥威武!
阿非 2010-09-26
  • 打赏
  • 举报
回复

public L bind<E, L>(L list)
where E : class, new() //E -> Entity
where L : IList<E> //L -> List
{


return default(L);
}

阿非 2010-09-26
  • 打赏
  • 举报
回复

public IList<T> bind<T>(IList<T> list) where T:class,new()
{
}


WOWER2010_13 2010-09-26
  • 打赏
  • 举报
回复
@非哥

在非泛型声明上不允许使用约束
阿非 2010-09-26
  • 打赏
  • 举报
回复

//就是这里,要调用不同的泛型类。写重载的话又太麻烦冗余了。。
public List<tbNews> bind(List<tbNews> list)
{
}



=>


public IList<T> bind(IList<T> list) where T:class,new()
{
}
WOWER2010_13 2010-09-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wuyazhe 的回复:]
设计器是无法直接用泛型控件做设计的。
[/Quote]

能用方法参数代替也行啊~~ 大哥指点下吧,谢谢!
兔子-顾问 2010-09-26
  • 打赏
  • 举报
回复
设计器是无法直接用泛型控件做设计的。
WOWER2010_13 2010-09-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 happy664618843 的回复:]
where表示泛型的范围 直接list<Control>
[/Quote]

能详细一些吗?谢谢!
happy664618843 2010-09-26
  • 打赏
  • 举报
回复
where表示泛型的范围 直接list<Control>
WOWER2010_13 2010-09-26
  • 打赏
  • 举报
回复
@2L

public List<tbNews> bind<T>(T list)
{
return null;
}

方法中定义的类型仍然是 List<tbNews> ,这个不对吧。
驿路依山 2010-09-26
  • 打赏
  • 举报
回复

public class UserControl : Control
{
protected override void Render(HtmlTextWriter writer)
{
//writer.Write(pager);
//base.Render(writer);
}

//就是这里,要调用不同的泛型类。写重载的话又太麻烦冗余了。。
public List<tbNews> bind<T>(T list)
{
return null;
}
}

sorry, 重新插入一下代码
驿路依山 2010-09-26
  • 打赏
  • 举报
回复
public class UserControl : Control
{
protected override void Render(HtmlTextWriter writer)
{
//writer.Write(pager);
//base.Render(writer);
}

//就是这里,要调用不同的泛型类。写重载的话又太麻烦冗余了。。
public List<tbNews> bind<T>(T list)
{
return null;
}
}

把泛型放在方法上应该可以把,楼主这样试一下

62,271

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧