我有两个实现相同接口的类:
public class UserVM : Iuser
public class User : Iuser
我需要用一些函数UserVM->interface->interface->User
,我可以这样做:
Iuser obj = new UserVM()
然后我需要做:
User user = obj;
它没有用(我也试过User user = obj as User
但没有用)。
如何正确投射?
原因与大多数其他"为什么从此特定接口转换为 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);