我有两个接口,其中一个是通用接口,只允许派生自第二个接口的类型。它们看起来像这样:
public interface IProvider<T> where T : IContent
{
T getContent(int i);
void addContent(T content);
}
public interface IContent
{
string whatIAm();
}
当然,我的真正接口更加复杂,但足以展示我的问题。现在,我为每个接口都有一个具体的类:
public class Provider : IProvider<FileContent>
{
public FileContent getContent(int i)
{
return null;
}
public void addContent(FileContent content)
{
}
}
public class FileContent : IContent{
public string whatIAm(){
return "FileContent";
}
}
在我的代码中,我想使用引用类型"IProvider",但是转换出错了...请看这个例子:
static void Main(string[] args)
{
Provider p = new Provider(); //works
IProvider<FileContent> pp = p as IProvider<FileContent>; //also works
IProvider<IContent> ppp = pp as IProvider<IContent>; //fails :(
}
ppp
总是为 null。我需要做哪些更改才能使此转换工作?提前感谢。