ExpandoObject
implements the IDictionary<string, object>
interface, where the key/values would be mapped to the the member name/values. If you have the property names in the fields
array, you'd just use those as the dictionary keys:
IDictionary<string, object> recipient = new ExpandoObject();
foreach (string property in fields)
{
recipient[property] = string.Empty;
}