c# - 泛型参数的构造函数要求?

标签 c# generics

查看this问题 我开始考虑如何在 C# 中处理构造函数要求。

假设我有:

T SomeMethod<T>(string s) : where T : MyInterface
{
    return new T(s);
}

我想对 T 设置要求,它可以由字符串构造,但据我所知,构造函数定义不允许作为接口(interface)的一部分。有解决这个问题的标准方法吗?

最佳答案

向您的界面添加一个初始化方法或属性,

public interface MyInterface
{
    void Init(string s);
    string S { get; set; }
}

T SomeMethod<T>(string s) : where T : MyInterface, new()
{
    var t = new T();
    t.Init(s);

    var t = new T
    { 
        S = s
    };

    return t;
}

因为您不能为构造函数约束指定参数

关于c# - 泛型参数的构造函数要求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6129496/

相关文章:

c# - 异步和并行执行函数

c# - 替换字符串 C# 中的换行符

c# - 如何正确锁定 Task.Run() block

java - 泛型定义

java - 如何安全地将泛型类型的 Collection 转换为数组?

c# - 绑定(bind)到对象的属性

c# - 表单获得焦点时 ObjectListView 上的黑色背景和伪像

java - 使用反射获取Java中泛型参数的类型

java - Java 中的通用 VS 通配符

java - Java中的可扩展双链树实现