title: How can we use default implementation of different interfaces?
body: <p>As I know, I need to upcast an instance of an inherited class to the interface where a needed method is implemented and then call it.</p>
  <pre><code>interface IProcess
  {
      void Do() { Console.WriteLine(&quot;doing&quot;); }
      //...
  }
  
  interface IWait
  {
      void Wait() { Console.WriteLine(&quot;waiting&quot;); }
      //...
  }
  
  class Example : IProcess, IWait { }
  
  
  static void Main(string[] args)
  {
      Example item = new Example();
      (item as IProcess).Do();
      (item as IWait).Wait();
  }
  </code></pre>
  <p>What if there are few interfaces with default implementation of different methods that I need? Is there some pattern that can solve this or maybe I should always use <em>as</em> keyword to call a method of a certain interface?</p>