Re[61]: MS забило на дотнет. Питону - да, сишарпу - нет?
От: Sinclair Россия https://github.com/evilguest/
Дата: 09.09.21 11:09
Оценка:
Здравствуйте, Serginio1, Вы писали:
S>Хорошо сделать не наследование а копирование. полей и методов.
С одной стороны, звучит как задача для source generators.
То есть помечаем интересные нам структуры атрибутом:
public struct Parent
{
  private int _a;
  public int GetA() => _a;
}

[Inherits(typeof(Parent))]
public partial struct Child
{
  private int _b;
  public int GetB() = >_b;
}

И source generator втаскивает в нашу структуру всё подряд из предка, добавляя
public partial struct Child
{
  private int _a;
  public int GetA() => _a;
}


C другой стороны — начинаются всякие вопросы типа "что делать с конструкторами", т.к. вот такой код будет падать с CS0171: Field 'C.Child._a' must be fully assigned before control is returned to the caller:

[Inherits(typeof(Parent))]
public partial struct Child
{
  private int _b;
  public int GetB() = >_b;
  public Child() => _b = 0;
}
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.