title: How to override this method using 'where T : Object'
body: <p>I'm trying to override this method but I fail to understand how</p>
  
  <pre><code>public virtual TUserData GetCurrentUser&lt;TUserData&gt;() where TUserData : UserData
          {
              LoadTokenCookie(String.Empty);
  
              if (!IsCurrentUserAuthorized())
              {
                  return null;
              }
  
              string responseText = (OAuthVersion == "1.0")
                              ? ExecuteAuthorizedRequest(HttpMethod.GET, MeGraphEndpoint)
                              : string.IsNullOrEmpty(AccessToken)
                                  ? ExecuteWebRequest(HttpMethod.GET, new Uri(MeGraphEndpoint + "?" + "access_token=" + AuthToken), null, String.Empty)
                                  : ExecuteWebRequest(HttpMethod.GET, new Uri(MeGraphEndpoint + "?" + AccessToken + "=" + AuthToken), null, String.Empty);
              var user = Json.Deserialize&lt;TUserData&gt;(responseText);
              return user;
          }
  </code></pre>
  
  <p>When I do the following,</p>
  
  <pre><code>public override TUserData GetCurrentUser&lt;TUserData&gt;() where TUserData : UserData{
  
  
              return new UserData();
          }
  </code></pre>
  
  <p>the compiler throws 
  "Constraints for override and explicit interface implementation methods are inherited from the base method, so they cannot be specified directly"</p>
  
  <p>So I assumed that the return type would be inherently understood as UserDat not TUserData but the following argues that the return type is incorrect</p>
  
  <pre><code>public override TUserData GetCurrentUser&lt;TUserData&gt;(){
  
  
                  return new UserData();
              }
  </code></pre>