接口定义构造函数签名?

接口定义构造函数签名?,第1张

接口定义构造函数签名?

如前所述,接口上不能有构造函数。但是,由于这是大约7年后在Google中获得如此高度评价的结果,我想我会在这里介绍一下-
专门展示如何使用抽象基类与现有接口配合使用,并减少重构量将来在类似情况下也需要。一些评论已经暗示了这个概念,但是我认为值得展示如何实际执行。

到目前为止,您的主界面如下所示:

public interface IDrawable{    void Update();    void Draw();}

现在,使用要强制执行的构造函数创建一个抽象类。实际上,由于自您编写原始问题以来就可以使用它,因此我们可以在这里花一些心思并在这种情况下使用泛型,以便我们可以将其适应于可能需要相同功能但具有不同构造函数要求的其他接口:

public abstract class MustInitialize<T>{    public MustInitialize(T parameters)    {    }}

现在,您需要创建一个同时继承自IDrawable接口和MustInitialize抽象类的新类:

public class Drawable : MustInitialize<GraphicsDeviceManager>, IDrawable{    GraphicsDeviceManager _graphicsDeviceManager;    public Drawable(GraphicsDeviceManager graphicsDeviceManager)        : base (graphicsDeviceManager)    {        _graphicsDeviceManager = graphicsDeviceManager;    }    public void Update()    {        //use _graphicsDeviceManager here to do whatever    }    public void Draw()    {        //use _graphicsDeviceManager here to do whatever    }}

然后只需创建一个Drawable实例,就可以了:

IDrawable drawableService = new Drawable(myGraphicsDeviceManager);

这里很酷的事情是,我们创建的新Drawable类的行为仍与IDrawable期望的一样。

如果需要将多个参数传递给MustInitialize构造函数,则可以创建一个类,为需要传递的所有字段定义属性。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5150816.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-18
下一篇 2022-11-18

发表评论

登录后才能评论

评论列表(0条)

保存