title: When implementing an interface which define a base class property why can't the class implementing interface return a derived class type object?
body: <p>Lets create some interfaces </p>
  
  <pre><code>public interface ITimeEventHandler
      {
          string Open();
      }
  
      public interface IJobTimeEventHandler : ITimeEventHandler
      {
          string DeleteJob();
      }
  
      public interface IActivityTimeEventHandler : ITimeEventHandler
      {
          string DeleteActivity();
      }
  
  
  
      public interface ITimeEvent
      {
          ITimeEventHandler Handler { get; }
      }
  
      public interface IJobTimeEvent : ITimeEvent
      {
          int JobID { get;  }
      }
  </code></pre>
  
  <p>Create a class</p>
  
  <pre><code>public class JobTimeEvent : IJobTimeEvent
      {
          public int JobID
          {
              get; internal set;
  
          }
  
          public IJobTimeEventHandler Handler
          {
              get; internal set;
          }
  
      }
  </code></pre>
  
  <p>My question is .. when implementing an interface which define a base class property why cant the class implementing interface return a derived class type object ??</p>
  
  <p>For ex in class JobTimeEvent, IJobtimeEvent needs a property of type ITimeEventHandler but why IJobTimeEventHandler type is not allowed which derived from  ITimeEventHandler </p>