无法覆盖基本属性

Mat*_*hew 3 c#

以下是糟糕的代码.请帮助我实现我想要实现的目标,但具有良好的代码.我想要一个从基础派生的对象数组.我想在DoStuff()运行时能够在BaseClass中使用该数组.我知道我不能贬低,这不是我想要做的.我只想在派生类中设置Fields,并在基础DoStuff()中使用Fields.

public class BaseObject
{

}

public class DerivedObject : BaseObject
{

}

public class BaseClass
{
    public BaseObject[] Objects;

    public virtual void DoStuff()
    {
        // use the Objects
    }
}

public class DerivedClass : BaseClass
{
    public override DerivedObject[] Objects;

    public override void DoStuff()
    {
        // Do stuff unique to the derived.

        base.DoStuff();
    }
}
Run Code Online (Sandbox Code Playgroud)

And*_*zub 9

你在寻找泛型?

public class BaseClass<T>
where T : BaseObject
{
    public T[] Objects;

    public virtual void DoStuff()
    {
        // use the Objects
    }
}

public class DerivedClass : BaseClass<DerivedObject>
{
    public override void DoStuff()
    {
        // Do stuff unique to the derived.

        base.DoStuff();
    }
}
Run Code Online (Sandbox Code Playgroud)

在上面的T类型(泛型或参数类型)的代码字段中声明,T被约束为BaseObject或继承自类BaseObject,当DerivedClass声明时DerivedObject指定为T,因此在DerivedClass Objects字段中可以用作DerivedObject[].