Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 71641
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 10, 20262026-05-10T19:55:11+00:00 2026-05-10T19:55:11+00:00

When browsing ASP.NET MVC source code in codeplex , I found it is common

  • 0

When browsing ASP.NET MVC source code in codeplex, I found it is common to have a class explicitly implementing interface. The explicitly implemented method/property then invoke another ‘protected virtual’ method/property with same name.

For example,

public class MvcHandler : IHttpHandler, IRequiresSessionState  {     protected virtual bool IsReusable      {         get          {            return false;         }     }      bool IHttpHandler.IsReusable      {         get          {            return IsReusable;         }     } } 

I’m now sure what’s the benefit of this kind of programming. For me, I prefer to just implicitly implement the interface IHttpHandler.

I guess the author just don’t want MvcHandler has a public property IsResuable. The property IsReusable can only be used when instance of MvcHandler is treated as a IHttpHandler. Still, I’m not sure why the author what this way.

Anybody know more benefits about this style of interface implementation?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. 2026-05-10T19:55:11+00:00Added an answer on May 10, 2026 at 7:55 pm

    Well, not specific to MVC, but this approach allows you to keep the core public API clean. It is also useful if there is ever a risk of different interfaces / etc having the same name & signature, but different meaning. In reality this is rare.

    It also allows you to provide an implementation where you want the return type to change in subclasses:

    (ICloneable chosen for simplicity – don’t get hung up on the fact that it is a poorly defined interface… a better example would have been things like DbCommand etc, which do this – but that is harder to show in a short example)

    class Foo : ICloneable {     public Foo Clone() { return CloneCore(); }     object ICloneable.Clone() { return CloneCore(); }     protected virtual Foo CloneCore() { ... } }  class Bar : Foo {     protected override Foo CloneCore() { ... }     public new Bar Clone() { return (Bar)CloneCore(); } } 

    If we had used a public virtual method, we wouldn’t be able to override it and use new in the base-class, as you aren’t allowed to do both:

    class A {     public virtual A SomeMethod() { ... } } class B : A {     public override A SomeMethod() { ... }     //Error 1   Type 'B' already defines a member called 'SomeMethod' with the same parameter types     public new B SomeMethod() { ... } } 

    Using the protected virtual approach, any usage:

    • Foo.Clone()
    • Bar.Clone()
    • ICloneable.Clone()

    all use the correct CloneCore() implementation for the concrete type.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 87k
  • Answers 87k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • Editorial Team
    Editorial Team added an answer It should be easy. If you record the frame number… May 11, 2026 at 5:28 pm
  • Editorial Team
    Editorial Team added an answer New info: This does what you want - the "\&"… May 11, 2026 at 5:28 pm
  • Editorial Team
    Editorial Team added an answer OK, this tutorial gives good information on how to do… May 11, 2026 at 5:28 pm

Related Questions

SUMMARY: When browsing an ASP.NET website using Windows Explorer, popup windows do not borrow
I've setup a new .net 2.0 website on IIS 7 under Win Server 2k8
I'm trying to run a freshly created ASP.NET Website using C#, however when I
I'm working on an ASP .NET 2.0 site which uses a Web Application project

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.