微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 为Generic参数指定构造函数约束

参见英文答案 > Is there a generic constructor with parameter constraint in C#?5个
我有一个对象的集合,我通过作为参数创建另一种类型的对象(一个一个).我在许多地方这样做(基本上从数据对象转换为业务对象).我想编写一个通用的扩展方法来完成这个.但是我被卡住了,因为我不知道如何指定业务对象具有以数据对象为参数的构造函数的约束.以下是我的功能代码
public static IList<T> ConvertTo<A,T>(this IEnumerable<A> list) 
                    where T : new(A)/*THIS IS PROBLEM PART*/
{
    var ret = new List<T>();

    foreach (var item in list)
    {
        ret.Add(new T(item));
    }
    return ret;
}

解决方法

不幸的是,这是不允许在C#.您可以有一个new()约束强制类型具有认构造函数,但这是.NET支持的唯一与构造函数相关的约束.

您最好的选择可能是定义一个可以使用的界面,并限制到界面.而不是尝试在构造中设置对象,您可以使用“初始化”样式方法获取“A”对象,并调用该对象.

原文地址:https://www.jb51.cc/csharp/97269.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐