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 deCustomProperty
campo deType
.
Tipo deDefaultValue
é conhecido apenas em tempo de execução.
Além disso, eu preciso fornecer um costumeTypeConverter
paraCustomProperty
propriedade deType
para mostrar uma lista suspensa de tipos suportados (por exemplo,Int
, String
, Color
, MyOwnClass
)
Como eu faria isso?