日期:2014-05-18  浏览次数:20807 次

关于泛型类继承的问题
class b{}
class b1:b{}
class b2:b{}
class c<T>{}
class c1:c<b1>{}
class c2:c<b2>{}
我想实现定义一个对象c<b> _aaa;能将c1,c2负值给_aaa,请帮忙看一看了,先谢了


------解决方案--------------------
C# code

using System;
namespace my
{
    class b  
    { 
        public string a; 
    } 
    class b1 : b { public b1(){a="b1";}} 
    class b2 : b { public b2() { a = "b2";} } 
    class c<T>{}
    class c1<b1> : c<b>  { } 
    class c2<b2> : c<b>  { } 
    class ac 
    { 
        public c <b> c;//此处可以将c1,c2的对象负值结c 

    } 
    class myClass
    {
       static void Main()
       {
            ac a1=new ac(); 
            c1<b1> c11 = new c1<b1>(); 
            c2<b2> c21 = new c2<b2>(); 
            a1.c = c11;
       }
    }
}

------解决方案--------------------
楼上的代码很有启发性,这样做确实可以发挥泛型的威力。

不过这段代码
C# code

class c1<b1> : c<b>  { } 
class c2<b2> : c<b>  { }

------解决方案--------------------
b1,b2继承与b
class c3 <T3>:c <b> where T3:b{} 
T3肯定是b的子类,不明白为什么非用泛型,这里用个桥模式不是更简单