Obrigado, isso realmente me ajudou muito hoje. Eu tinha as informações de auditoria salvas, mas com letras incorretas nos nomes das propriedades. (A auditoria está incorporada em uma camada de dados.) De qualquer forma, tive que adicionar o IgnoreCase como um sinalizador de ligação, mas ainda assim não funcionou, até que meu colega de trabalho encontrasse essa resposta. A função resultante:
public static void SetProperty(Object R, string propertyName, object value)
{
Type type = R.GetType();
object result;
result = type.InvokeMember(
propertyName,
BindingFlags.SetProperty |
BindingFlags.IgnoreCase |
BindingFlags.Public |
BindingFlags.Instance,
null,
R,
new object[] { value });
}
Isso faz parte de uma classe que eu chamo de DotMagic.