これを使用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
これは正しい抽象化ではないと思います。