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);

Foi útil?

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 um PropertyDescriptor, assim como o primeiro exemplo - mas diferentes ganchos)

As regras completas de como os metadados baseado em lista é buscada estão em esta resposta

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top