0

语言是 C#。
假设我在 A 类中重写了方法

    class A:B
    {
        protected override void Method(BaseClass bc)
        {
            (DerivedClass)bc.DerivedClassField = blabla;
        }
    }

是否有任何库/语言功能/等我可以编写以下内容:

    class A:B
    {
        protected override void Method(BaseClass bc)
        {
            bc.DerivedClassField = blabla;
        }
    }

例如,通过向 A 类添加一些属性或其他什么?
对不起,糟糕的格式。

4

2 回答 2

1

您可以使用泛型以类型安全的方式执行此操作:

class A<T> where T : BaseClass {
    protected virtual void Method(T bc) { ... }
}

class B : A<DerivedClass> {
    protected override void Method(DerivedClass bc) {
        bc.DerivedClassField = blabla;
    }
}

但是如果你甚至想在A<T>不知道的情况下使用,这可能会导致其他问题T,在这种情况下,我会使用强制转换(如果类结构意味着强制转换不会失败)或重新定义你的对象模型。

于 2011-12-19T13:17:19.323 回答
0

如果您确定它就是这样,您可以转换bc为。DerivedClass

class A:B
{
    protected override void Method(BaseClass bc)
    {
        ((DerivedClass)bc).DerivedClassField = blabla;
    }
}
于 2011-12-19T13:15:15.393 回答