在上图中,您可以看到代码合同中的警告。我不认为这是合法的,因为this
永远不会是null
。
这是一个错误还是我错过了什么?
此属性是以下类的成员:
public class NHibernateIQueryableQueryBase<TEntity, TQuery, TQueryInterface>
: IQuery<TEntity>, IFluentQueryInterface<TEntity, TQueryInterface>
where TQuery : NHibernateIQueryableQueryBase<TEntity, TQuery,
TQueryInterface>,
TQueryInterface
where TQueryInterface : IQuery<TEntity>
更新:
将属性更改为以下内容仍会显示警告 - 在行return result;
上:
public TQueryInterface And
{
get
{
var result = this as TQuery;
return result;
}
}
答案 0 :(得分:1)
分析无法理解this
是否有效实施TQuery
因此,它警告您最终可能会对接口类型进行null
引用,并将其作为实现该接口的struct
返回:
您需要将: class
添加到TQueryInterface
参数的约束中。
答案 1 :(得分:0)
基于this question,我要说你需要指定如果演员失败会发生什么。
尝试return this as TQuery
,因为如果转换失败,as
运算符将返回null,而显式转换会抛出错误。