克隆扩展无效

时间:2012-10-12 02:11:23

标签: c#

下面我想念的是什么?当我尝试 list.Clone()克隆未显示在列表中时。

https://stackoverflow.com/a/222640/139698

class Program
{
    static void Main(string[] args)
    {
        List<Customer> list = new List<Customer>();
        list.Clone() //There is no Clone method in the list
    }
}

public static class Extensions
{
    public static IList<T> Clone<T>(this IList<T> listToClone) where T : ICloneable
    {
        return listToClone.Select(item => (T)item.Clone()).ToList();
    }
}

public class Customer
{
    public string ContactName { get; set; }
    public string City { get; set; }
}

2 个答案:

答案 0 :(得分:5)

客户必须实施ICloneable,因为您的通用条件表明T必须实施ICloneable。

public class Customer : ICloneable

答案 1 :(得分:0)

您需要在ICloneable课程上实施Customer界面。此外,由于已为IList<T> T is ICloneable定义了扩展方法,您可能需要使用以下语法

        IList<Customer> list = new List<Customer>();
        list.Clone(); 

如果Clone()未实现Customer,则ICloneable扩展方法将无法显示