exploring a more functional cqrs in c# (not f#)