RPM*_*984 3 .net c# abstract-class virtual-functions abstract-methods
我以前做过这件事 - 只是记不住诀窍.
如果我有一个抽象类:
公共抽象类Post
还有一组派生类:
公共课照片:Post
我想强制派生类实现一个名为Validate()的方法,但同时在Post级别提供核心验证.
我可以创建一个方法:公共抽象void验证()在后,这将迫使派生类来实现的方法,但后来我如何执行后(基地)验证?
最终的结果是我希望能够做到这一点:
public class BLL
{
public void AddPost(Post post)
{
post.Validate(); // includes "Post" validation, any deriving validation.
repository.Add(post);
}
}
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
jjn*_*guy 10
这是你想要的:
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();
}
Run Code Online (Sandbox Code Playgroud)
这将强制基类实现验证技术,并且外部用户将调用基本Validate.
不可能将方法抽象化,并提供默认实现.
| 归档时间: |
|
| 查看次数: |
180 次 |
| 最近记录: |