答案 0 :(得分:1)
这是我从使用ASP.NET Core的Microsoft的Daniel Roth那里得到的回复。
我相信在这种情况下,使用抽象类可以在将来的版本中添加成员,这可以通过接口进行。
答案 1 :(得分:0)
关于此主题有很多意见(例如here和here)。即使ASP.NET团队通常使用接口,我也可以想到在这种情况下他们选择抽象类的一些原因:
<强>版本强>
我不希望HttpContext
类改变很多,但抽象类版本比接口更容易(它们实际上根本不是版本),因为它们可以使用virtual
关键字部分实现。 / p>
<强>封装强>
抽象类封装了一组功能,其中接口为特定功能提供了更多的契约。类只能实现一个抽象类,这对于HttpContext
实现是有意义的,例如DefaultHttpContext
。
向后兼容性
尽管ASP.NET Core完全重写了ASP.NET,但开发人员习惯于对HttpContext
类进行多年编程。这两个类都有很多特点。
请记住,我只是在这里猜测,也许ASP.NET团队的一些人可以启发我们。