ExpandoObject implements IDictionary<string, object>:
((IDictionary<string, object>)obj)[propName] = propValue
I don’t know off the top of my head whether you can use the indexer syntax with a dynamic reference (i.e., without the cast), but you can certainly try it and find out.