Как достичь свойства универсального интерфейса c с другим неуниверсальным интерфейсом c - PullRequest
0 голосов
/ 28 мая 2020

Позвольте мне перечислить все мои текущие классы и интерфейсы:

IItem:

public interface IItem<T> where T : ItemData {
    T Data { get; }
}

Item:

public class Item<T> : IItem<T> where T : ItemData {
    T data = null; // I am setting this something else later on

    T Data => data;
}

Оборудование:

public class Equipment<T> : Item<T>, IEquipment where T : EquipmentData {
    // Code...
}

Как я могу получить данные с помощью IEquipment? Спасибо.

1 Ответ

0 голосов
/ 28 мая 2020

Вы не можете напрямую, вам сначала нужен кастинг.

IEquipment equipement = new Equipment();

// ...

// 'object as type' will cast the object with the corresponding type if possible, else return null
var data = (equipement as ItemData)?.Data; // data will be null if cast is not possible
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...