C# 如何重写非虚拟方法?

C# 如何重写非虚拟方法?,c#,inheritance,overriding,virtual,C#,Inheritance,Overriding,Virtual,我有虚拟方法的基类。我有一个子类,它重写了这个方法。然后我有了child的child,但是我怎么能重写相同的方法呢?若我试图将“virtual”添加到第二个类中,我会收到一条消息:“Override方法不能标记为virtual”。若我试图将“override”添加到第三个类中,我会得到一条消息:“这不是一个适用于override的方法” 如何解决这个问题 我可以从第一个类继承第三个类,但实际上我想从第二个类继承一些方法 public virtual T Save (T entity)

我有虚拟方法的基类。我有一个子类,它重写了这个方法。然后我有了child的child,但是我怎么能重写相同的方法呢?若我试图将“virtual”添加到第二个类中,我会收到一条消息:“Override方法不能标记为virtual”。若我试图将“override”添加到第三个类中,我会得到一条消息:“这不是一个适用于override的方法”

如何解决这个问题

我可以从第一个类继承第三个类,但实际上我想从第二个类继承一些方法

public virtual T Save (T entity)
        {
            //removed code

            return entity;
        }

public override T Save(T entity)
        {
            //removed code

            return entity;
        }

 public T Save(T entity)
        {
            return entity;
        }

只需在child的child中重写它。重写方法是隐式虚拟的。

只需在child的子级中重写它即可。重写方法是隐式虚拟的。

所有方法都是隐式虚拟的。把它们全部覆盖

所有这些都是隐式虚拟的。把它们全部覆盖

您能显示所有三个签名吗?在子项上指定覆盖应该可以正常工作。你确定签名是一样的吗?你能从每个类中发布有问题的方法吗?在中添加了代码question@Alex-真奇怪。您确定第三个类实际上继承了第二个类吗?因为这真的应该有效。好的,刚刚在第三类声明中发现拼写错误。现在覆盖正在工作。请显示所有三个签名好吗?在子项上指定覆盖应该可以正常工作。你确定签名是一样的吗?你能从每个类中发布有问题的方法吗?在中添加了代码question@Alex-真奇怪。您确定第三个类实际上继承了第二个类吗?因为这真的应该有效。好的,刚刚在第三类声明中发现拼写错误。现在覆盖正在工作。但是如果我不能添加覆盖?如果你不能添加覆盖是什么意思?如果我尝试添加覆盖,我会收到错误消息。事实上,类声明不正确,当我修复它时,它正在工作。但如果我不能添加覆盖?你是什么意思,如果你不能添加覆盖?如果我尝试添加它,我会收到错误消息。实际上,类声明是不正确的,当我修复它时,它正在工作。