日期:2014-05-17  浏览次数:20767 次

一个简单的泛型问题
   /// <summary>
    /// 实体类
    /// </summary>
    public class Entity
    {
        public int ID; 

    }
    /// <summary>
    /// 客户类继承实体
    /// </summary>
    public class Customer : Entity
    {
        public string Name;
        public int age;
    } 


    public class Operate<T> where T : Entity
    {
        public Operate()
        { }

        public void Print()
        {
            Console.Write("Test");
        } 
    }


    public class TestClass 
    {
        public   TestClass()
        { 
            //这样赋值是有问题的,因为Entity是基类,Customer是子类,能否通过何种方式进行赋值呢? (问题)
            Operate<Entity> O = new Operate<Customer>(); --如何做才能
        } 
    }
 


------解决方案--------------------
引用:
Google 协变与逆变


实现不了,除非Entity是一个接口。
------解决方案--------------------
如果想编译过去,很简单,你可以写
public class Operate<T> where T : Entity