如何使用Interface类强制使用Constructor方法?

时间:2010-09-20 11:05:38

标签: c#

构造函数没有通用名称,但与类名相同,因此在接口类中强制执行它们存在语法问题。那样的语法是什么:

Interface IInterface {

    <class-name-of-implementer>(string param) {}
}

我在创建初始化方法时遇到的问题是你的framwork / library的客户端应用程序只能忘记调用它!在我看来,如果构造函数被命名为__Constructor,就像在其他一些语言中那样可能因为语法而不可能!

语法不应该驱动设计而是语义。

3 个答案:

答案 0 :(得分:3)

你不能,我害怕。

一般来说,无论如何你都无法使用这样的构造函数 - 你期望如何调用它?您可以对类型参数强制执行无参数构造函数,如下所示:

public class Foo<T> where T : new()

但您无法指定任何必需的参数。

我之前曾建议,能够在接口中指定静态成员(包括构造函数),用于类型约束(并在表达式中使用基于这些的成员)约束类型参数)。有关详细信息,请参阅my blog post

答案 1 :(得分:2)

你不能这样做。你最好的选择是

interface IInterface 
{
  void Initialize(string param);
}

其中Initialize执行一些初始化工作(如果这是您正在执行的操作)。

答案 2 :(得分:0)

接口中不允许使用构造函数。

解决方法是在构造函数中放置一个initialize()方法,并在此处执行所有与构造函数相关的操作。凌乱,但这就是你所能做的一切。