如何将接口obj转换为obj类?

时间:2019-01-14 13:14:20

标签: c# class interface casting

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

 public class UserVM : Iuser
 public class User : Iuser

我需要使用一些函数强制转换UserVM->interface->interface->User,我可以这样做:

 Iuser obj = new UserVM()

然后我需要做:

User user = obj;

它没有用(我也尝试过User user = obj as User但没有用)。

如何正确投放?

1 个答案:

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