2012-11-17 25 views
0

使用DynamicObject可以創建自定義類並定義其實例與其他類型進行比較時的行爲。這是通過覆蓋TryBinaryOperation完成的。將自定義動態對象與參考類型進行比較

但是,當我嘗試將其與null或任何參考值進行比較時,重寫的方法從不會被調用。

public class Foo : DynamicObject 
{ 
    public override bool TryBinaryOperation(BinaryOperationBinder binder, object arg, out object result) 
    { 
     if (binder.Operation == ExpressionType.Equal) 
     { 
      result = true; 
      return true; 
     } 

     return base.TryBinaryOperation(binder, arg, out result); 
    } 
} 

static void Main(string[] args) 
{ 
    dynamic foo = new Foo(); 

    Console.WriteLine(foo == 1); // True 
    Console.WriteLine(foo == new object()); // False 
    Console.WriteLine(foo == null); // False 
} 

有沒有辦法攔截這個調用?我會假設DynamicObject不是這個的正確抽象。

回答