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

传参继承怎么实现
本帖最后由 grayhoundd 于 2013-01-15 15:21:05 编辑
class ConfigA{}
class ConfigB:ConfigA{}

class A{ virtualvoid test(ConfigA configA){} }

在定义如下类时,方法名是一致的,但是参数是一个子类参数,如何让B实例化使用时,只可见ConifigB的方法

class B:A{ override void test(ConfigB configB){} }

B b= new ();
b.test( configB ); //不可见configA的方法

------解决方案--------------------
    public class ConfigA { }
    public class ConfigB : ConfigA { }

    public class A<T> where T : ConfigA
    {
        protected void _test1(ConfigA configA) { }

        public void test2(T config) { }

        public void test3<T1>(T1 config) where T1 : ConfigA
        { }
    }

    public class B<T> : A<T> where T : ConfigB
    {
        public void test1(ConfigB configB) 
        {}

        public void test3<T1>(T1 config) where T1 : ConfigB
        {}
    }


我抛砖引玉吧,3种方式