我已经对该问题进行了很多研究,并且已经知道直接答案。您不能使用新参数覆盖基本方法。问题是,我想做的事情很简单,但我不知道要寻找什么,或者我想做的事是无稽之谈,因此,如果有人可以指出我的方向,那将是一个很好的方向。
这就是我想要做的。我有一个带有创建方法的基类。此方法采用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>在这里使用泛型方法,因为反射不适用于泛型类型。
相关分类