C# - Задание параметров типа суперкласса в подклассах? - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь сделать следующее в C#.

public class Parent<T> where T : Parent<???>
{
  public T Prop { get; set; }
}

public class Child : Parent<Child>
{
}

Как я могу это сделать?

1 Ответ

2 голосов
/ 16 апреля 2020

Это прекрасно работает:

public class Parent<T> where T : Parent<T>
{
  public T Prop { get; set; }
}

public class Child : Parent<Child>
{
}

Будьте осторожны с этим, поскольку c# не обеспечивает истинные отношения Parent / Child. Например, учитывая приведенный выше код, для меня также будет законным сделать следующее:

public class Stranger : Parent<Child>
{
}

Если вы пишете модульные тесты, то стоит написать средство проверки типов, которое ищет эту ошибку.

...