读书人

问一个泛型方法的有关问题

发布时间: 2012-09-18 16:21:42 作者: rapoo

问一个泛型方法的问题

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即可...

[解决办法]
过度设计了不是?

读书人网 >C#

热点推荐