我以前做过这个 - 只是不记得诀窍了。

如果我有一个抽象类:

公共(public)抽象类发布

以及一组派生类:

公开课 照片:发布

我想 强制 派生类实现一个名为 Validate() 的方法,但同时在 Post 级别提供 核心 验证。

我可以创建一个方法: public abstract void Validate() in Post ,这将强制派生类实现该方法,但是我如何执行 Post (基础)验证?

最终结果是我希望能够做到这一点:

public class BLL
{
   public void AddPost(Post post)
   {
       post.Validate(); // includes "Post" validation, any deriving validation.
       repository.Add(post);
   }
}

我该怎么做?

最佳答案

这是你想要的:

public abstract class Post {

    // Default validation technique
    public void Validate()
    {
        // your base validation
        // Then call the specific validation technique
        ExtraValidate();
    }

    // Forces subclasses to provide validation technique
    protected abstract void ExtraValidate();
}

这将强制基类实现验证技术,并且基 Validate 将被外部用户调用。

不可能使方法抽象,并提供默认实现。

关于c# - 提供通用和派生组合功能的抽象/虚拟成员 - C#,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4220371/

10-13 09:05