Como exibir um objeto dinâmico na grade de propriedades?

Eu tenho um tipo de objeto personalizado que deve ser editável emPropertyGrid:

public class CustomObjectType
{
    public string Name { get; set; }        
    public List<CustomProperty> Properties {get; set;}
}

Que possui uma lista de propriedades personalizadas:

public class CustomProperty
{
    public string Name { get; set; }
    public string Desc { get; set; }
    public Object DefaultValue { get; set; }    
    Type type;

    public Type Type
    {
        get
        {
            return type;
        }
        set
        {
                type = value;
                DefaultValue = Activator.CreateInstance(value);
        }              
    }
}

O principal problema aqui é que oPropertyGrid controle não permite editar, nem utiliza ferramentas de edição apropriadas para propriedadesDefaultValue que é instanciado de antemão definindo o valor deCustomPropertycampo deType.

Tipo deDefaultValue é conhecido apenas em tempo de execução.

Além disso, eu preciso fornecer um costumeTypeConverter paraCustomPropertypropriedade deType para mostrar uma lista suspensa de tipos suportados (por exemplo,Int, String, Color, MyOwnClass)

Como eu faria isso?

questionAnswers(2)

yourAnswerToTheQuestion