猿问

C#使用具有不同参数的基类中的方法

我已经对该问题进行了很多研究,并且已经知道直接答案。您不能使用新参数覆盖基本方法。问题是,我想做的事情很简单,但我不知道要寻找什么,或者我想做的事是无稽之谈,因此,如果有人可以指出我的方向,那将是一个很好的方向。


这就是我想要做的。我有一个带有创建方法的基类。此方法采用Type参数,并使用反射创建具有其属性的关联对象。无论我作为参数传递的任何类型,其效果都很好,但现在我希望此方法返回参数中所述的类型传递,以将其添加到列表中。自然,我只是向创建的模型添加了返回值,但无法将Type对象添加到List Student中(我自己的类型在这里)。因此,我尝试创建一个派生类,然后在该类中将参数从Type更改为Student。显然,这是行不通的,但是现在我被卡住了。我的基本方法运行完美(除了事实它没有返回我想要的东西),我只想修改派生类的返回类型。这是代码片段。(注意:我是法国人)


abstract class ControllerBase

{

    public virtual Type Create(ControlContainer controlContainer, Type typeToCreate)

    {

        dynamic returnObject = null;


        //Stuff that creates my returnObject


        return returnObject;

    }

}


class StudentControl : ControllerBase

{

    static public List<Student> Students{ get; set; }


    public Type Create(ContainerControl containerControl, Type typeToCreate)

    {

        typeToCreate = typeof(Student);

        return base.Create(containerControl, typeToCreate);

    }

}

所以,这基本上就是我想要做的。将我的基本方法的返回类型转换为派生类中的另一种类型,以便将其添加到“学生”列表中。我已经环顾四周,但实际上并没有在这里寻找什么。我不能<T>在这里使用泛型方法,因为反射不适用于泛型类型。


心有法竹
浏览 156回答 1
1回答
随时随地看视频慕课网APP
我要回答