C#学习教程:使用as关键字转换对象会返回nullclassAbstractContactEntity:AbstractEntity,...publicsealedclassEntityCollectionProxy:IList,System.Collections.IListwhereT:AbstractEntity现在我从委托中得到了一个我想要的对象,但它没有像我预期的那样工作。varobj=resolver.DynamicInvoke(this.entity);varcol=obj作为EntityCollectionProxy;obj是EntityCollectionProxy类型。但是col是空的。如果我尝试常规转换(varcol=(Entity...)obj),我会得到一个异常。我希望它能工作,因为类型是连贯的。我错过了什么?它们属于不同的类型。它与List和List相同:它们也不可互换。AbstractContactEntity是一个AbstractEntity并没有改变这一点。从EntityCollectionProxy中提取接口并使其协变也不起作用,因为你要实现IList,这意味着你有输入参数并返回类型T的值,这会防止协变。唯一可行的解??决方案如下:vartmp=(EntityCollectionProxy)obj;varcol=tmp.Select(x=>(AbstractEntity)x);col是IEnumerable类型。如果你想要一个EntityCollectionProxy,你需要创建一个新的:varresult=newEntityCollectionProxy(col);这假定您的EntityCollectionProxy类具有接受IEnumerable的构造函数。但请注意,这将是一个新实例,不同于resolver.DynamikInvoke返回的实例。以上就是C#学习教程:使用“as”关键字转换对象会返回null的所有分享内容,如果对大家有用还需要详细了解C#学习教程,希望大家多多关注对吧——本文来源于网络收集,不代表侵权,如涉及侵权请点击右侧联系管理员删除。如需转载请注明出处:
