c# - 如何使用 Interface 类强制执行 Constructor 方法?

标签 c#

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

Interface IInterface {

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

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

语法不应驱动设计,而应驱动语义。

最佳答案

恐怕你不能。

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

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

但您不能指定任何必需的参数。

我之前曾建议能够在接口(interface)中指定静态成员(包括构造函数),用于类型约束(并在基于这些的表达式中使用它们的成员)会很有用约束类型参数)。参见 my blog post了解更多详情。

关于c# - 如何使用 Interface 类强制执行 Constructor 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3750807/

相关文章:

c# - 在 Monotouch 中子类化和覆盖 UITextField

c# - 如何在 C# 中使用 BouncyCaSTLe 进行 Blowfish 单向哈希?

c# - .NET CLR 线程池耗尽 - 实现错误?

c# - 加速 System.Collection.Generic.Queue() 可能吗?

c# - 如何在不需要等待当前函数/线程的结果的情况下运行异步任务?

c# - 更改语言中的 GRID.mvc 问题 [ASP.net MVC 4]

c# - xsi :type attribute messing up C# XML deserialization

c# - 使用带有 Regex 的 Linq 删除空匹配项

c# - 使用 EF Core 将表达式树转换为 SQL

c# - Post 方法在 ASP.NET Core 中不起作用