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 63k
  • Answers 63k
  • 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
  • added an answer Functors are not a priori object-oriented (in C++, the term… May 11, 2026 at 10:32 am
  • added an answer The wiki of Ogre3D provides a list of networking libraries… May 11, 2026 at 10:32 am
  • added an answer I'm no Zend expert, but I guess you could subclass… May 11, 2026 at 10:32 am

Related Questions

When browsing ASP.NET MVC source code in codeplex , I found it is common
SUMMARY: When browsing an ASP.NET website using Windows Explorer, popup windows do not borrow
When using Google Reader and browsing RSS entries in the Expanded view, entries will
When editing XAML in VS2008 SP1, the editor is really slow. devenv process seems
When should I include PDB files for a production release? Should I use the
When using jQuery 's ajax method to submit form data, what is the best
When spliting a solution in to logical layers, when is it best to use
When writing a switch statement, there appears to be two limitations on what you
When building a VS 2008 solution with 19 projects I sometimes get: The GenerateResource
When writing multi-threaded applications, one of the most common problems experienced are deadlocks. My

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.