【发布时间】:2012-06-08 22:50:17
【问题描述】:
这与我最近发布的另一个主题相似,但也许这可能更简单明了:
我想完成以下(或非常相似的事情)...
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>,我会得到一个空值。
【问题讨论】:
-
所以这在 C# 3.5 中不可行?
-
很遗憾,没有。至少,不是直接的。您必须找到解决方法,例如使
CompanyNameDao继承自IManageableEntryDao<IManageableEntry>;这是你的电话。 -
对,这不太优雅,因为 CompanyNameDao 返回的是 IManageableEntry 对象而不是 CompanyName 对象。
标签: c# generics interface polymorphism