não TypeDescriptor.CreateProperty não adicionar uma propriedade
-
05-07-2019 - |
Pergunta
Eu estou tentando adicionar uma propriedade a um tipo usando TypeDescriptor.CreateProperty a fim de exibir uma propriedade adicional em uma grade de propriedades, no entanto esta nova propriedade não é adicionada e quando eu chamo TypeDescriptor.GetProperties nesse tipo de inspecionar as propriedades , esta propriedade não existe.
Existe algo que eu possa estar faltando ou com vista para? Este é um cenário básico e simples, tanto quanto me lembro.
Aqui está a chamada: TypeDescriptor.CreateProperty (typeof (MovieMenuItem), "ExternalMediaLocation", typeof (string), null);
Solução
CreateProperty
apenas lhe dá de volta um PropertyDescriptor
à base de reflexão para o tipo em questão (não é AddProperty
, por exemplo). Qual é o cenário aqui? Se você só precisa exibir dados extras em DataGridView
, a opção mais simples é simplesmente adicionar uma coluna não acoplada extra para a grade.
Você pode estender tipos em tempo de execução, mas para listas você tem duas opções principais:
-
ITypedList
(se cada instância da lista pode ter diferentes colunas) - ver esta resposta -
TypeDescriptionProvider
- permite que você adicione propriedades personalizadas por tipo (em última análise, resume-se a escrever umPropertyDescriptor
, assim como o primeiro exemplo - mas diferentes ganchos)
As regras completas de como os metadados baseado em lista é buscada estão em esta resposta