não BindingFlags.IgnoreCase trabalhando para Type.GetProperty ()?
-
06-07-2019 - |
Pergunta
Imagine a seguinte
Um tipo T tem um campo Company. Ao executar o seguinte método funciona perfeitamente:
Type t = typeof(T);
t.GetProperty("Company")
Whith a seguinte chamada recebo nula embora
Type t = typeof(T);
t.GetProperty("company", BindingFlags.IgnoreCase)
Alguém tem uma idéia?
Solução
Você substituídas as bandeiras olhar-up padrão, se você especificar novas bandeiras que você precisa fornecer todas as informações para que a propriedade pode ser encontrado. Por exemplo: BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance
Outras dicas
Você precisa adicionar BindingFlags.Public | BindingFlags.Instance
Obrigado, isso realmente me ajudou em uma pitada hoje. Tive informações de auditoria salvo, mas com embalagem incorreta sobre os nomes das propriedades. (A auditoria é construído em uma dataLayer.) De qualquer forma, então eu tive que adicionar IgnoreCase como um sinalizador de ligação, mas então ele ainda não funcionou, até o meu colega de trabalho acharam esta 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 });
}
Esta é parte de uma classe que eu chamo DotMagic.