title: C# - Override <T> method signature with ClassName?
body: <p>Is there a way to override an abstract class's method signature which uses <code>&lt;T&gt;</code> with a ClassName so I can pass an object by reference without recasting it?</p>
  
  <p>For example, I have a bunch of Object Managers. I want them all to contain a .Save(Object) method which will perform the appropriate save action based on the object state (Insert, Update, Delete, etc).</p>
  
  <p>I was trying to create a base class which contains these methods:</p>
  
  <pre><code>protected virtual bool Update&lt;T&gt;(ref T _object) where T : ObjectBase
  {
      throw new NotImplementedException();
  }
  
  public virtual bool Save&lt;T&gt;(ref T _object) where T : ObjectBase
  { 
      // Figure out which action to take based on _object's state and execute it
  }
  </code></pre>
  
  <p>And I wanted my inherited classes to define the methods using something like this:</p>
  
  <pre><code>public override bool Update&lt;Consumer&gt;(ref Consumer _object)
  {
      return _service.UpdateConsumer(ref _object);
  }
  </code></pre>
  
  <p>My problem is that I can't specify that <code>&lt;T&gt;</code> will now be <code>&lt;Consumer&gt;</code>, and by keeping it at <code>&lt;T&gt;</code> I can't pass it by ref</p>