问一个泛型方法的问题 public T GetDatas<T>() where T : IDatas { if(this.taskType == ETaskType.DEFAULT_TASK) { return (T)this.dds; } else { return (T)this.cds; } }要达到这个效果该怎么写?dds,cds等成员变量继承于 IDatas我想根据当前类的 枚举来判断返回不同的 T. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public IDatas GetDatas() { if(this.taskType == ETaskType.DEFAULT_TASK) { return this.dds; } else { return this.cds; } }直接返回IDatas不可以么? 没看出来有使用范型的必要,直接返回就可以了public IDatas GetDatas(){} 返回IDatas 之后还要强转成子类(这是可行的,但我需求是泛型啊). 因为接口只是个架子摆在那 ,我没定义接口方法.实际上 dds 和 cds 是2个完全不同的东西,没有任何共性. 只不过我强行让他们 实现了 IDatas 接口而已. 怎么这么武断.dds 内挂载3个 对象类型 成员变量的属性cds 内挂载4个 值类型的 成员变量的属性.我要访问这些东西 怎么可能通过 IDatas 呢. 如果非要返回 IDatas 的话最终我还是不得不强转回子类 http://zhidao.baidu.com/question/439541252.html还有, 这个人为什么可以那么实现? 那么首先明确一个问题,在你这种使用需求下,你定义的IDatas 接口本身没有意义,实际只是在利用语法而已。这种设计本身就不是很合理的,属于接口滥用。 我解决了.http://topic.csdn.net/u/20110927/14/07ed6192-eaba-4d95-bf99-78f4df05621b.html这个给了答案, 转T之前强转成object即可... 你实现了相同的接口。就算你不转OBJECT也可以直接转。这样你还是强制转换成子类一样的道理。 c#关于两usercontrol的问题,在线求助 WCF Add Service Reference出错 如何把修改后数据保存回XML文件 在winForm中 怎样实现控件的随意托动 C# 处理Word技术 关于.Nte DataGrid的删除出错! 大哥门,求助!!!!具有线性结构的数据是? 更新Sql Server数据库问题? =S.O.S= 大侠们,救命呀! 有效马上送分! 学习C#入门了,想要一些带注解入门例程或者经典的程序!!! 关于c#中的常量与变量 VC怎么调用C#写的Activex控件?
if(this.taskType == ETaskType.DEFAULT_TASK)
{
return this.dds;
}
else
{
return this.cds;
}
}直接返回IDatas不可以么?
public IDatas GetDatas()
{}
还有, 这个人为什么可以那么实现?
这种设计本身就不是很合理的,属于接口滥用。
http://topic.csdn.net/u/20110927/14/07ed6192-eaba-4d95-bf99-78f4df05621b.html这个给了答案, 转T之前强转成object即可...
这样你还是强制转换成子类一样的道理。