oop Проверьте, является ли возвращаемый тип родительским или дочерним классом. - PullRequest
1 голос
/ 18 апреля 2019

Предположим, у меня есть этот класс:

public class Parent
{
    public string Name {get; set;}
}

и этот класс, который наследуется от Parent:

public class Child : Parent
{
    public string Toys {get; set;}
}

В некотором случайном классе у меня есть функция, которая возвращает Parent:

public class SomeClass
{
    public Parent GetPerson()
    {
      if (whatever)
      {
        return new Parent { Name = 'Parent' };
      }
      else
      {
        return new Child {Name = 'Child', Toys = 'Paper Plane, Spider Man'};
      }
    }
}

когда я вызываю этот GetPerson, я хочу знать, родитель это или ребенок.Я думал, что это может сработать, но это условие всегда ложно

var person = GetPerson();

if (person is Child childPerson) // This is always false :(
{
   var toys = childPerson.Toys;
}

Ответы [ 2 ]

3 голосов
/ 18 апреля 2019

Я скопировал и вставил оператор "if", и он возвращает true, когда человек на самом деле имеет тип "Child".Убедитесь, что тип лица действительно принадлежит к типу child, когда вы вводите условие if.Это предполагает, что GetPerson ();всегда возвращает родителя.

0 голосов
/ 18 апреля 2019

Вы пробовали GetType () и typeof () ?

Пример:

if (person.GetType() == typeof(Child))
{
   ...
}

С уважением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...