Я пытаюсь понять некоторые особенности реализации интерфейса и нуждаюсь в некоторой базовой помощи. Учитывая следующий код:Реализация интерфейса C# в другом классе
public interface IGameObject
{
Vector3 GetSomePosition();
}
public interface IPlayer : IGameObject
{
void Die();
}
public class Player : GameObject, IPlayer
{
void Die() { }
}
Могу ли я реализовать интерфейс IGameObject в каком-нибудь другом классе вместо класса игрока и использовать реализацию этого другого класса? Например, некоторый специальный класс, называемый «GameObjectImplementation», который реализует интерфейс IGameObject. Так как я не могу наследовать от двух классов, как мне это сделать?
----------------------------- РЕДАКТИРОВАТЬ ---------------- -----------
Лучшим решением, которое я нашел сейчас, было создание базового класса.
public abstract class PlayerBase : GameObject, IGameObject
{
public Vector3 GetSomePosition()
{
return this.transform.Position;
}
}
public class Player : PlayerBase, IPlayer
{
void Die() { }
}
Любые другие предложения? Как инъекция или каким-то образом явных реализаций? Или это лучший способ сделать это уже?
Если GameObject реализует IGameObject, тогда вам не нужно предоставлять дополнительную реализацию в Player – Ewan
Вы можете реализовать несколько интерфейсов в каком-то базовом классе и расширить его. На вашем коде вы внедрили класс GameObject, я думаю – Orifjon
Класс GameObject исходит из библиотеки и не имеет интерфейса для его методов, вот почему мне нужно отвлечь его методы, чтобы я мог получить доступ к нему из других мест , Попробует решение с абстрактным классом и дополнительным наследованием. – PsMaster