简体   繁体   English

通用类型。 没有装箱转换或类型参数转换

[英]Generic types. There is no boxing conversion or type parameter conversion

I have the following structure of my code : 我的代码具有以下结构:

public interface ICode { }

public interface IPreparedCode<TCode>
    where TCode : ICode { }

public interface ILayer<TPreparedCode>
    where TPreparedCode : IPreparedCode<ICode> { }

public interface IContext<TCode, TPreparedCode, TLayer>
    where TCode : ICode
    where TPreparedCode : IPreparedCode<TCode>
    where TLayer : ILayer<TPreparedCode> { }

and i have error "There is no boxing conversion or type parameter conversion from TPreparedCode to IPreparedCode<ICode>". 并且我有错误“没有从TPreparedCode到IPreparedCode <ICode>的装箱转换或类型参数转换”。

The generic parameter for ILayer is constrained to be IPreparedCode<ICode> , but the generic parameter you are giving it, is TPreparedCode , which is constrained to IPreparedCode<TCode> . ILayer的通用参数被限制为IPreparedCode<ICode> ,但是您提供的通用参数是TPreparedCode ,它被限制为IPreparedCode<TCode> Notice the difference? 注意区别吗? IPreparedCode<TCode> can't be converted to IPreparedCode<ICode> . IPreparedCode<TCode>无法转换为IPreparedCode<ICode>

To fix this, you can add an extra generic parameter TCode to ILayer , and constrain TPreparedCode to IPreparedCode<TCode> instead.: 要解决此问题,您可以向ILayer添加一个额外的通用参数TCode ,并将TPreparedCode约束为IPreparedCode<TCode>

public interface ICode { }

public interface IPreparedCode<TCode>
    where TCode : ICode { }

public interface ILayer<TPreparedCode, TCode>
    where TCode : ICode
    where TPreparedCode : IPreparedCode<TCode> { }

public interface IContext<TCode, TPreparedCode, TLayer>
    where TCode : ICode
    where TPreparedCode : IPreparedCode<TCode>
    where TLayer : ILayer<TPreparedCode, TCode> { }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 通用Type参数没有装箱或类型参数转换 - No boxing or type parameter conversion for generic Type parameter 没有装箱或类型参数转换 - There is no boxing or type parameter conversion 没有使用Mono的通用Type参数的装箱或类型参数转换 - No boxing or type parameter conversion for generic Type parameter with Mono 没有来自“ T”的装箱转换或类型参数转换 - There is no boxing conversion or type parameter conversion from 'T' 没有从“ TKey”到“ System.IEquatable”的装箱转换或类型参数转换 - There is no boxing conversion or type parameter conversion from 'TKey' to 'System.IEquatable' 类型“int”不能用作泛型方法中的类型参数“T”。 'int' 没有拳击转换 - The type 'int' cannot be used as type parameter 'T' in the generic method. There is no boxing conversion from 'int' 泛型类型的Linq类型转换 - Linq type conversion on generic types Microsoft.Data.Analysis package 中的泛型类型出现“没有装箱转换”错误 - "There is no boxing conversion" error with generic type in Microsoft.Data.Analysis package 没有来自的装箱转换或类型参数转换 <T> 到&#39;Microsoft.WindowsAzure.Storage.Table.ITableEntity&#39; - There is no boxing conversion or type parameter conversion from <T> to 'Microsoft.WindowsAzure.Storage.Table.ITableEntity' 从&#39;V&#39;到&#39;System.IEquatable没有装箱转换或类型参数转换 <V> “ - There is no boxing conversion or type parameter conversion from 'V' to 'System.IEquatable<V>'
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM