我以前做过这个 - 只是不记得诀窍了。
如果我有一个抽象类:
公共(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/