与同一接口列表的接口

我有以下界面:

public interface IObject{ double x {get;} double y {get;} List List{get; set;} } 

和这堂课

 public class Holder where T : IObject { private T myItem; public void ChangeItemList(T item){ myItem.List = item.List; } 

但是编译器不喜欢ChangeItemList方法并且在这一行:

 myItem.List = item.List; 

给我这个错误:

 Cannot convert source type 'List' to target type 'List' 

为什么我不能这样做,这个场景有什么好的解决方案? 谢谢

我不确定你想要实现什么,但以下编译和运行没有例外:

 class Program { static void Main(string[] args) { var holder = new Holder(); holder.MyItem = new Object { List = new List() }; holder.ChangeItemList(new Object { List = new List() }); } } public class Object : IObject { public List List { get; set; } } public interface IObject { List List { get; set; } } public class Holder where T : IObject { public T MyItem { get; set; } public void ChangeItemList(T item) { MyItem.List = item.List; } } 

尝试这样做 – 为我工作。 我的问题是myItem为null。

 public class Holder where T : IObject { private T myItem = Activator.CreateInstance(); public void ChangeItemList(T item) { myItem.List = item.List; } }