我的功能如下:
private T DeserializeStream<T>(Stream data) where T : IExtensible
{
try
{
var returnObject = Serializer.Deserialize<T>(data);
return returnObject;
}
catch (Exception ex)
{
this.LoggerService.Log(this.AccountId, ex);
}
return null;
}
一切都很好,除了它抱怨return null;
部分
无法将表达式类型“null”转换为“T”
类型
如何从这样的函数返回null?
答案 0 :(得分:7)
您可以添加T
是一个类的通用约束(因为结构是值类型,不能是null
)。
private T DeserializeStream<T>(Stream data) where T : class, IExtensible
作为@mindandmedia commented,另一种方法是返回default
of T
- 这将允许它处理值类型(例如Nullable<T>
,int32
等等...)。