c#.我可以自动替换派生类而不是基类吗?
本文关键字:基类 我可以 替换 派生 | 更新日期: 2023-09-27 18:18:21
语言为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添加一些属性或其他方法来 ?
您可以使用泛型以类型安全的方式完成此操作:
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
,在这种情况下,我将使用强制转换(如果类结构意味着强制转换不会失败)或重新定义您的对象模型。
你可以将bc
转换为DerivedClass
,如果你确定它是什么。
class A:B
{
protected override void Method(BaseClass bc)
{
((DerivedClass)bc).DerivedClassField = blabla;
}
}