title: C# Inheriting properties from parent interface
body: <p>I'm trying to mock up a data access library for Neo4J in .NET 4.5. I am using interfaces to define each command to the database.</p>
  
  <p>Given:</p>
  
  <pre><code>    public interface IBaseRequest 
      {
          HttpMethod HttpMethod { get; }    
          string QueryUriSegment { get; }    
      }
  
      public interface ICreateNode  : IBaseRequest
      {
          void CreateNode();
  
      }
  
      public interface IBaseNodeActions  : ICreateNode,ICreateNodeWProperties //...And many others, all inherit from IBaseRequest
      {
      }
  
      internal class TestImplClass : IBaseNodeActions {
  
  
          public TestImplClass() {
  
  
          }
          void ICreateNode.CreateNode() {
              throw new NotImplementedException();
          }
          //Only one copy of the HttpMethod and QueryUriSegment are able to be implemented
          DataCommands.HttpHelper.HttpMethod IBaseRequest.HttpMethod {
              get {
                  throw new NotImplementedException();
              }
          }
  
          string IBaseRequest.QueryUriSegment {
              get {
                  throw new NotImplementedException();
              }
          }
  </code></pre>
  
  <p>Problem is for each interface that inherits from IBaseRequest, I need a property implemented for each property that it's parent owns (HttpMethod, QueryUriSegment). </p>
  
  <p>Is this possible? I know that using explicit implementation will be necessary but not sure how to push those into the implementing class.</p>
  
  <p>Here is what I'd like to see in my implementing class:</p>
  
  <pre><code>public class TestImplClass : IBaseNodeActions{
  public TestImplClass() {
  
  
          }
          void ICreateNode.CreateNode() {
              throw new NotImplementedException();
          }
  
          HttpMethod ICreateNode.HttpMethod {
              get {
                  throw new NotImplementedException();
              }
          }
  
          string ICreateNode.QueryUriSegment {
              get {
                  throw new NotImplementedException();
              }
          }
          HttpMethod ICreateNodeWProperties.HttpMethod {
              get {
                  throw new NotImplementedException();
              }
          }
  
          string ICreateNodeWProperties.QueryUriSegment {
              get {
                  throw new NotImplementedException();
              }
          }
  }
  </code></pre>
  
  <p>Notice the ICreateNode and ICreateNodeWProperties instead of the IBaseRequest. I'm open to doing it differently but it seems like a modular, testable approach.</p>
  
  <p>I hope that makes sense!</p>