title: Avoiding explicit delegation when using implicits to implement a Trait
body: <p>I am using several classes like this:</p>
  
  <pre><code>class MyClassOne {
    doSomething(a : A) : B
    ... 
  } 
  
  class MyClassTwo {
    doSomething(a : A) : B
    ... 
  } 
  </code></pre>
  
  <p>The source for the classes is not under my control. Although the classes have methods with the same signature they don't implement an interface. I would like to define methods that work on all the classes.</p>
  
  <p>So I've made a Trait like this:</p>
  
  <pre><code>trait MyTrait {
    doSomething(a : A) : B
  }
  </code></pre>
  
  <p>And have made implicit conversions for all the classes:</p>
  
  <pre><code>implicit class MyClassOneMyTrait(myClassOne : MyClassOne) {
    def doSomething(a : A) = myClassOne.doSomething(a)
  }
  </code></pre>
  
  <p>Is there a way to take advantage of the naming conventions used in the classes and avoid explicitly delegating to the objects passed into the constructor? More generally, is using a Trait with implicit classes the best approach to this problem?</p>