Как получить доступ к attributes (название фона, символа и модели подарка) у класса StarGiftBase?

var us = await _client.Contacts_ResolveUsername(*username*);
var t = await _client.Payments_GetSavedStarGifts(us.User, $"");
StarGift gift = t.gifts.First().gift;
string model = gift.attributes[0].name; //ошибка

Подарок(gift) получил, хочу узнать фон и тп через attributes, но пишет, что нет такого объекта, хотя в дебаге все замечательно отображается(не у всех подарков, я это знаю и учитываю)

вот что показывает в дебаге


Ответы (1 шт):

Автор решения: User12351259599491

Это называется pattern matching.
Каждую базовую сущность нужно проверять на конкретный (зависимый) тип, чтобы получить доступ к специфическим полям и методам.
Как в этом примере.

object gift ="";

if (gift is StarGiftUnique g) 
{

  foreach (var atr in g.attributes) 
  {
    if (atr is StarGiftAttributeModel resultAttr)
    {

       Console.WriteLine(resultAttr.name);

    }

  }

}
→ Ссылка