日期:2014-05-17  浏览次数:20852 次

问一个泛型方法的问题
C# code

    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.

------解决方案--------------------
public IDatas GetDatas() {
if(this.taskType == ETaskType.DEFAULT_TASK)
{
return this.dds;
}
else
{
return this.cds;
}
}

直接返回IDatas不可以么?
------解决方案--------------------
没看出来有使用范型的必要,直接返回就可以了
public IDatas GetDatas()
{

}
------解决方案--------------------
探讨
怎么这么武断.

dds 内挂载3个 对象类型 成员变量的属性

cds 内挂载4个 值类型的 成员变量的属性.

我要访问这些东西 怎么可能通过 IDatas 呢. 如果非要返回 IDatas 的话最终我还是不得不强转回子类

------解决方案--------------------
探讨
我解决了.
http://topic.csdn.net/u/20110927/14/07ed6192-eaba-4d95-bf99-78f4df05621b.html

这个给了答案, 转T之前强转成object即可...

------解决方案--------------------
过度设计了不是?