Pergunta

Se eu tiver uma classe que implementa ICustomTypeDescriptor Posso substituir as GetProperties () método para substituir completamente todas as propriedades da classe com meu costume PropertyDescriptors .

Mas o que se eu quiser manter as propriedades existentes da classe e acrescentar propriedades adicionais para a classe? Existe uma maneira para retornar um conjunto de descritores de propriedades personalizadas que são adicionados às propriedades de classe existentes?

Por exemplo, eu quero que o usuário seja capaz de definir propriedades personalizadas em meu programa que irá mostrar-se em uma grade de propriedade. Os valores das propriedades personalizadas serão armazenadas em um dicionário (string chave, valor do objeto) coleta, e quero acrescentar PropertyDescriptors que irão ler e os valores de escrita também e de esta coleção com base nos valores-chave.

Eu não acho que IExtenderProvider iria funcionar porque ele só acrescenta as propriedades de uma classe para outra. Mas eu preciso ser capaz de adicionar e remover as propriedades dinamicamente em tempo de execução. Posso ter um IExtenderProvider classe que também implementa ICustomTypeDescriptor para que propriedades Acrescenta pode ser descoberto em tempo de execução?

Foi útil?

Solução

Deve ser capaz de apenas adicionando à coleção atual:

    public override PropertyDescriptorCollection GetProperties(Attribute[] attributes)
    {
        PropertyDescriptorCollection cols = base.GetProperties(attributes);
        cols.Add(); // Add your custom property descriptor here
        return cols;
    }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top