【发布时间】:2010-09-21 18:48:52
【问题描述】:
在codeplex 中浏览 ASP.NET MVC 源代码时,我发现有一个类显式实现接口是很常见的。显式实现的方法/属性然后调用另一个具有相同名称的“受保护的虚拟”方法/属性。
例如,
public class MvcHandler : IHttpHandler, IRequiresSessionState
{
protected virtual bool IsReusable
{
get
{
return false;
}
}
bool IHttpHandler.IsReusable
{
get
{
return IsReusable;
}
}
}
我现在确定这种编程有什么好处。对我来说,我更喜欢只隐式实现接口 IHttpHandler。
我猜作者只是不希望 MvcHandler 有一个公共属性 IsResuable。 IsReusable 属性只能在 MvcHandler 的实例被视为 IHttpHandler 时使用。不过,我不确定作者为什么会这样。
有人知道这种接口实现方式的更多好处吗?
【问题讨论】:
-
这很有趣,在您最初发帖后的 3 年之前阅读 MVC 源代码,我也有完全相同的问题。
标签: c# interface implicit explicit-interface