Как привести интерфейс obj к классу obj? - PullRequest
0 голосов
/ 14 января 2019

У меня есть два класса, которые реализуют один и тот же интерфейс:

 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 голосов
/ 14 января 2019

Ну, причина та же, что и для большинства других вопросов "почему конвертировать в 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...