Что именно вы хотите сделать? Работа с различными значениями операторов (примитив (сопоставленный с определенными инструкциями IL), пользовательский (сопоставленный со статическими методами) и отмененный (предоставляемый компилятором как шаблон)) делает это болезненным. Если вы просто хотите использовать операторов, то можно написать код, обеспечивающий поддержку операторов через generics . У меня есть некоторый код для этого, который свободно доступен в MiscUtil ( описание и примеры ).
В качестве нетипизированного примера (обратите внимание, что это не очень эффективно, но работает):
object x = 123, y = 345; // now forget that we know that these are ints...
object result = Expression.Lambda<Func<object>>(
Expression.Convert(Expression.Add(
Expression.Constant(x), Expression.Constant(y)),
typeof(object))).Compile()();