如何将接口 obj 转换为类 obj



我有两个实现相同接口的类:

 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);

最新更新