【问题标题】:Class with parametrized constructor always [duplicate]具有参数化构造函数的类始终[重复]
【发布时间】:2012-07-14 05:44:05
【问题描述】:

可能重复:
Interface defining a constructor signature?

我可以在接口中声明方法和属性,并强制实现它的类来实现这些方法和属性。 同样,是否可以强加一个规则,使我所有实现某个接口的类都应该始终具有参数化构造函数?

我不确定这是否可能。只是一个想法。

谢谢

【问题讨论】:

标签: c# oop constructor


【解决方案1】:

同样是否有可能强加一个规则,使我所有实现某个接口的类都应该始终具有参数化构造函数?

不,不是通过接口声明。

您可以创建一个抽象类,而 可以有一个参数化的构造函数 - 所有实现类型都将继承构造函数,并且能够使用 base 关键字链接到它。请注意,这不会阻止您从实现无参数构造函数中继承类型。

【讨论】:

    【解决方案2】:

    不,但如果您的目标是规范接口实例的构造方式,请定义另一个接口作为第一个实例的工厂。在工厂界面中,您可以强加所需的构造参数。

    interface IFoo
    {
        ...
    }
    
    interface IFooFactory
    {
        IFoo CreateFoo(string param1, string param2)
    }
    

    【讨论】:

    • 谢谢..这看起来像我想要的。你能详细说明一下吗? Foo 类会是什么样子?
    【解决方案3】:

    一个类有构造函数,而接口不能。因此,您不能强制实现某些接口的类具有参数化构造函数

    但是你可以有一个具有多个构造函数的类,它的子类可以选择他们想使用哪个构造函数

    【讨论】:

      猜你喜欢
      • 2012-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-05
      • 1970-01-01
      • 1970-01-01
      • 2020-12-27
      相关资源
      最近更新 更多