title: C# operator overloading does not work
body: <p>These is my code:</p>
  
  <pre><code>    public static Symbol operator + (Symbol op1, Symbol op2)
      {
          Symbol op3 = new Symbol() { op3.type = Type.Value };
  
          object o1 = null;
          object o2 = null;
  
          object replacement;
          try
          {
              o1 = op1.value.Value;
              o2 = op2.value.Value;
  
              if (o1 is string || o2 is string)
                  replacement = o1.ToString() + o2.ToString();
              else if (o1 is double &amp;&amp; o2 is double)
                  replacement = (double)o1 + (double)o2;
              else
                  throw new Exception("only to be caught");
          }
          catch
          {
              op3.type = Type.Invalid;
              op3.value = null;
              replacement = op3;
          }
          Debug.WriteLine(String.Format("ExpressionEvaluator {0} + {1} = {2}", o1, o2, replacement));
  
          op3.value = new Naked(replacement, typeof(bool));
          return op3;
      }
  </code></pre>
  
  <p>I gate the following error:
  One of the parameters of a binary operator must be the containing type</p>
  
  <p>Any idea what is wrong? </p>