如何解决我的项目依赖问题?

时间:2019-11-03 04:50:57

标签: c# interface

我有3个项目:

  • GameEngine.Rendering
    • 包含用于其他项目的接口和抽象类,以实现和创建呈现API抽象层。
  • GameEngine.Rendering.OpenGL4
    • 接口的OpenGL 4.0实现。
  • GameEngine.Rendering.Direct3D11
    • 接口的Direct3D 11实现。

GameEngine.Rendering 项目的一个界面如下所示:

public interface IRenderContext
{
    void SwapBuffers();
}

此接口的OpenGL 4.0实现需要一个IWindowInfo接口作为要创建的参数,而Direct3D 11实现则不需要。 Direct3D 11的实现需要窗口的IntPtr句柄。

在我想轻松轻松地创建渲染上下文之前,我认为这不会成为一个大问题:

var renderContext = CreateRenderContext(DriverType.Direct3D11, windowHandle);

我想到的唯一解决方案是在 GameEngine.Rendering 项目中创建类似的结构,该结构实现IWindowInfo

public struct RenderContextInfo : IWindowInfo
{
    public IntPtr OutputHandle { get; set; }
}

但是,这并不是一个很好的设计选择,因为我宁愿 GameEngine.Rendering 项目对任何实现一无所知。

我只是想知道如何解决这个问题?有什么花哨的技巧可以让我实例化IWindowInfo接口吗?

0 个答案:

没有答案