foreach (var prop in data.GetType().GetFields()) { foreach (var attribute in prop.GetCustomAttributes(true)) { if (attribute is DataMemberAttribute) { DataMemberAttribute member = attribute as DataMemberAttribute; writer.Write("{0}={1}&", member.Name ?? prop.Name, prop.GetValue(data)); } } }