using System;
using System.Dynamic;
using System.Linq.Expressions;
class Evil : DynamicObject {
static void Main() {
dynamic cout = new Evil();
var hacketyHackHack =
cout << "abc" << "def";
}
public override bool TryBinaryOperation(BinaryOperationBinder binder, object arg, out object result) {
switch(binder.Operation) {
case ExpressionType.LeftShift:
case ExpressionType.LeftShiftAssign:
Console.WriteLine(arg);
result = this;
return true;
}
return base.TryBinaryOperation(binder, arg, out result);
}
}