Дифференциация дочерних интерфейсов в словаре, ключом которого является родительский интерфейс. ⇐ C#
-
Гость
Дифференциация дочерних интерфейсов в словаре, ключом которого является родительский интерфейс.
Предположим, у меня есть интерфейс
публичный интерфейс IBase { публичный недействительный Регистр(); } И некоторые другие интерфейсы
публичный интерфейс IPlayer : IBase { } общедоступный интерфейс IEnemy: IBase {} ... Практически каждый, кто реализует дочерний интерфейс, выполнит Register():
public void Register() { InterfaceContainer.instance.AddInterface(this, gameObject); } Наконец, InterfaceContainer — это синглтон, который выглядит следующим образом:
публичный класс InterfaceContainer { // одноэлементный материал public Dictionary словарь = new(); public void AddInterface (IBase iBase, GameObject gameObject) { словарь [iBase] = gameObject; } общественный GameObject Get (IBase iBase) => словарь [iBase]; } Метод Get(IBase) работает неправильно. Как мне правильно отличить ключи, если они являются дочерними интерфейсами? Другими словами, как я могу гарантировать, что вызов InterfaceContainer.instance.Get() вернет правильное значение?
Предположим, у меня есть интерфейс
публичный интерфейс IBase { публичный недействительный Регистр(); } И некоторые другие интерфейсы
публичный интерфейс IPlayer : IBase { } общедоступный интерфейс IEnemy: IBase {} ... Практически каждый, кто реализует дочерний интерфейс, выполнит Register():
public void Register() { InterfaceContainer.instance.AddInterface(this, gameObject); } Наконец, InterfaceContainer — это синглтон, который выглядит следующим образом:
публичный класс InterfaceContainer { // одноэлементный материал public Dictionary словарь = new(); public void AddInterface (IBase iBase, GameObject gameObject) { словарь [iBase] = gameObject; } общественный GameObject Get (IBase iBase) => словарь [iBase]; } Метод Get(IBase) работает неправильно. Как мне правильно отличить ключи, если они являются дочерними интерфейсами? Другими словами, как я могу гарантировать, что вызов InterfaceContainer.instance.Get() вернет правильное значение?
Мобильная версия