这与我最近发布的另一个主题类似,但也许这可能更简单、更清晰:
我想完成以下任务(或非常类似的事情)...
IManageableEntryDao<IManageableEntry> dao = new CompanyNameDao();
...具有以下类:
public interface IManageableEntry {
string Name { get; set; }
}
public class CompanyName : IManageableEntry {
public string Name { get; set; }
}
public interface IManageableEntryDao<T> where T : IManageableEntry {
}
public class CompanyNameDao : IManageableEntryDao<CompanyName> {
}
如果我尝试进行类型转换 as IManageableEntryDao<IManageableEntry>
,我得到一个空值。
最佳答案
我相信你需要covariance为了这个工作。此功能仅在 C# 4.0 中可用。您需要做什么:
public interface IManageableEntryDao<out T> where T : IManageableEntry { }
关于C# 将泛型类型向上转型为接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10956891/