У меня есть родительский класс под названием Widget. У меня есть список виджетов, которые я храню. В этом списке хранятся дочерние элементы виджета, такие как Button, Label, DropDown и т. Д. Когда в моем редакторе выбран ребенок, я назначаю этот объект (его по имени в списке виджетов) в PropertyGrid. Однако, поскольку они хранятся как вид Widget, свойство PropertyGrd показывает только свойства виджета. Я хочу нарисовать дочерний виджет на его фактический тип, когда я установил его в PropertyGrid, чтобы PropertyGrid мог видеть свойства дочернего элемента, но я хочу сделать это динамически, вместо использования команд if/case, потому что дочерние виджеты используют систему Plugin, поэтому Я не буду знать, что такое тип во время разработки. Я знаю, что я должен использовать отражение, и я в порядке, но я просто не знаю, как это сделать.C# Динамически литой объект для сетки свойств
Поскольку я храню дочерние виджеты в контейнере родительского виджета, он будет храниться как виджет, не так ли? Значение PropertyGrid видит только свойства виджета?
Dictionary<string, Widget> Widgets;
Widgets.Add("button1", new Button()); // gets converted to parent Widget
PropGrid.SelectedObject = Widgets["button1"];
public class Button : Widget.Widget
{
public String Test { get; set; } // this doesn't show up in the property grid
}
Просьба указать код. – ataravati
Можете ли вы показать свойство примера, которое не отображается? Если ваш код похож на тот, который показан в ответе Тима, он должен уже работать, поэтому пример поможет. Также: это winforms? Wpf? Или...? –
@MarcGravell 'PropertyGrid' - класс winforms. Я добавил этот тег. –