【发布时间】:2017-04-21 07:43:30
【问题描述】:
public abstract class BusinessObject : ObservableObject, IBusinessObject
public abstract class BusinessModel<T> : IBusinessModel<T> where T : IBusinessObject
public class User : BusinessObject
public class UserModel : BusinessModel<User>
为什么我不能将 UserModel 转换为 IBusinessModel
【问题讨论】:
-
因为类没有差异。查找协变和逆变。这肯定是重复的,我希望有人找到一个匹配的问题来关闭这个。
-
您在问题中没有 IBusinessModel 或 IBusinessObject 的定义,所以谁知道呢? (但可能是因为虽然
User始终是BusinessObject,但BusinessObject可能不是User... 而UserModel想要User,而不是BusinessObject) -
Stack Overflow 上有数百个问题已经在问您要问的问题:“为什么我不能将我的对象投射到它不是的东西上?”有关最早的示例之一,请参见标记的副本。它包括一些关于为什么你认为你想做的事情实际上不安全的讨论,而不是你的代码应该能够做的事情。