我有两个实现相同接口的类:
public class UserVM : Iuser
public class User : Iuser
我需要使用一些函数强制转换UserVM->interface->interface->User
,我可以这样做:
Iuser obj = new UserVM()
然后我需要做:
User user = obj;
它没有用(我也尝试过User user = obj as User
但没有用)。
如何正确投放?
答案 0 :(得分:2)
原因与其他大多数“为什么从此特定接口转换为obj失败”问题相同。
一碗苹果是一碗水果。但是一碗水果不一定是一碗苹果,这就是为什么会出现编译器错误的原因。同样的事情也适用于单个对象。
您正在尝试将具体对象转换为其他类型,以便可以使用ctor注入或运算符重载(除其他外):
public class User
{
public User(Iuser obj)
{
this.myProperty1 = obj.myProperty1;
... assign all field here
}
}
要使用它,只需执行以下操作:
Iuser obj = new UserVM()
User user = new User(obj);