为什么我可以这样做:
public T GetMainContentItem<T>(string moduleKey,string itemKey) { return (T)GetMainContentItem(moduleKey,itemKey); }
但不是这样:
public T GetMainContentItem<T>(string moduleKey,string itemKey) { return GetMainContentItem(moduleKey,itemKey) as T; }
它抱怨说我没有足够的限制通用类型,但是我会认为该规则也适用于使用“(T)”进行转换.
解决方法
因为’T’可以是一个值类型,而’T’对于值类型没有任何意义.你可以这样做:
public T GetMainContentItem<T>(string moduleKey,string itemKey) where T : class { return GetMainContentItem(moduleKey,itemKey) as T; }