我有一个像这样的通用函数:
private LOCAL_TYPE RemoteToLocal<LOCAL_TYPE>(RemoteObjectBaseType remoteObject)
where LOCAL_TYPE: EntityBase
{
Type t = typeof(LOCAL_TYPE);
if (t == typeof(FavoritePlace))
{
return new FavoritePlace(remoteObject as RemotePlaceType1);
}
}
EntityBase
非抽象类在哪里。FavoritePlace
类继承自EntityBase
.
但是,我收到一个错误:
无法将类型 Common.Model.FavoritePlace 隐式转换为“LOCAL_TYPE”。
这让我想知道:FavoritePlace 是 EntityBase 的子项,而 LOCAL_TYPE 被限制为 EntityBase 类型。为什么不能发生转换?我可能在这里遗漏了一些重要的东西。
编辑:好的,根据当前的答案和一些实验,我找到了另一种解决方法,即进行以下转换:
if (t == typeof(FavoritePlace))
{
return (LOCAL_TYPE)(EntityBase)new FavoritePlace(remoteObject);
}
现在编译器很高兴。但我只是想知道,如果从编译器的角度来看这种转换是可能的,为什么不能直接转换为 LOCAL_TYPE 呢?不是可转换为关系传递吗?