Доступ к методам в классе, содержащемся в другом классе, без ссылки на содержащийся класс

#c# #class #monogame

#c# #класс #моногейм

Вопрос:

У меня есть Screen класс, который содержит SpriteBatch from Monogame . Я хочу получить доступ к SpriteBatch.Draw() методу без необходимости делать Screen.spriteBatch.Draw() , но вместо этого:

 screen.Draw(sprite, position, color);
  

Я мог бы сделать это, просто определив методы следующим образом:

 class Screen
{
    public void Draw(Texture2D texture, Rectangle rect, Color color)
    {
        spriteBatch.Draw(texture, rect, color);
    }
    public void Draw(Texture2D texture, Vector2 position, Color color)
    {
        spriteBatch.Draw(texture, position, color);
    }

    .... and so on for every other override of SpriteBatch.Draw
}
  

Но это, очевидно, очень долго, и я бы предпочел не вводить вручную каждое переопределение.

Есть ли более простой способ сделать это?

Комментарии:

1. вы уверены, что абстрагировали функциональность на правильном уровне? Вы дали экрану spritebatch, обычно это означает, что вы хотите, чтобы экран отвечал за использование sprintbatch для рисования чего-либо — например, сцены, сложных движений и т. Д. — А Не просто выражал ту же функциональность, которую использует содержащийся класс.

Ответ №1:

Пусть класс Screen наследуется от SpriteBatch, в коде это будет выглядеть так:

 Screen : SpriteBatch