似乎无缘无故无法转换通用类?

我有一个通用的界面,允许用户决定要在整个系统中使用哪种变量,但是我也希望有一个易于使用的标准,如果不需要,他们可以代替使用灵活性(在这种情况下为字符串),所以我有两个接口:

public interface Identifiable<IdentifierType> { public IdentifierType Identifier { get; }}

和:

public interface Identifiable : Identifiable<string> { }

我有两个具有相似关系的班级:

public class Registry<IdentifierType,EntryType> 
    where EntryType : Identifiable<IdentifierType> { }

public class Registry<EntryType> 
    : Registry<string,EntryType> where EntryType : Identifiable { }

我还有另外两个类,其中使用了这两个类:

public Mapping<IdentifierType> 
{ 
    public Mapping(Registry<IdentifierType,Identifiable<IdentifierType>> registry) 
}

和:

public Mapping : Mapping<string> 
{ 
    public Mapping(Registry<Identifiable> registry) : base(registry) 
}

但是在后一类中,编译器抱怨无法从Registry<Identifiable>转换为Registry<string,Identifiable<string>>。这是为什么?在我看来,第一种类型只是后者的子类,应该轻松转换,但显然不是。是我做错了什么我想念的东西还是遗漏了继承的东西,或者为什么无法进行转换?

wanyfkkk 回答:似乎无缘无故无法转换通用类?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3156750.html

大家都在问