title: conditional logic based on type
body: <p>Given:</p>
  
  <pre><code>interface I
  {
  }
  
  class B: I
  {
  }
  
  class C: I
  {
  }
  
  class A
  {
  
      public void Method(B arg)
      {
      }
  
      public void Method(C arg)
      {
      }
  
      public void Method(I arg)
      {
         // THIS is the method I want to simplify.
         if (I is B)
         {
            this.Method(arg as B);
         }
         else if (I is C)
         {
            this.Method(arg as C);
         }
      }
  }
  </code></pre>
  
  <p>I know that there are better ways to design this type of interactions, but because of 
  details which would take too long to explain this is not possible.
  Since this pattern will be duplicated MANY times, I would like to replace the
  conditional logic with a generic implementation which I could use just one line.
  I can't see a simple way to implement this generic method/class, but my instincts tell me it should be possible.</p>
  
  <p>Any help would be appreciated.</p>