c# - 通用约束 : Enforce type to have static function and constructor with parameters

标签 c# .net generics generic-constraints

我知道你可以写:

class GenericClass<T> where T : new()
{ 

}

强制 T 有一个空的构造函数。

我的问题是:

  1. 你能强制 T 有一个带有特定类型参数的构造函数吗?喜欢:

    class SingletonFactoryWithEmptyConstructor<T> where T : new(int)
    
  2. 您能否强制 T 具有静态函数(比方说,void F())以便您可以在泛型类中使用该函数?喜欢:

    class GenericClass<T> where T : void F()
    { 
       void G ()
       {
           T.F();
       }
    }
    

    我知道您可以指定 T 实现接口(interface),但我不希望那样。我想指定 T 有一个静态函数。

最佳答案

不,C# 中没有这样的东西。

我之前建议 "static interfaces"可以合理巧妙地表达这一点。它们对泛型类型约束有用(无论如何我怀疑)但是你可以表达:

  • 具有任意参数的构造函数
  • 静态方法和属性
  • 运营商

在我看来,最后一点特别有趣,它允许使用合适的加法和除法运算符对数字类型使用通用的“平均”方法。

我相信 MS 的一些人已经考虑过类似的事情,但我没有听到任何迹象表明他们正在积极致力于此。

关于c# - 通用约束 : Enforce type to have static function and constructor with parameters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5919773/

相关文章:

java - 泛型类型参数隐藏类型

html - 更改预先编写的类的 css 属性

c# - 将 Azure Function 发布为 NuGet 包(或从外部程序集加载函数)

java - 泛型和继承?

c# - 如何以编程方式调整图片大小并将其添加到网站

.NET 4.0 框架与 .NET 1.1 位于同一服务器上

java - 如何使用泛型限制 HashMap 中的键及其值?

c# - WPF: Canvas Z 索引错误

c# - 使用 VSTO 读取和修改 Word 文档的文本

c# - 动画方法、简化与修复