装饰者模式隐藏装饰者的接口

Bob*_*der 5 c# decorator

public interface IRender
{
  void Render();
}

public interface IUpdate
{
  void Update(float deltaTime);
}
Run Code Online (Sandbox Code Playgroud)

我有实现 IRender 的类,其中一些还实现 IUpdate。通过使用装饰器模式,我可以扩展他们的 Render 方法。

public abstract class Decorator: IRender
{
  protected IRender decoratee;

  public Decorator(IRender decoratee)
  {
    this.decoratee = decoratee;
  }

  public virtual Render()
  {
    decoratee.Render();
    // add custom rendering code here.
  }
}
Run Code Online (Sandbox Code Playgroud)

这样做的美妙之处在于,我可以通过将对象包装到多个装饰器(如头巾娃娃)中来创建自定义渲染行为。

我的问题是 IUpdate 接口以及装饰者实现的任何其他接口现在将被装饰器隐藏。我有许多系统接受对象列表,并根据它们实现的接口对它们进行操作。装饰类只会公开 IRender 接口。

解决这个问题最干净的方法是什么?