Я пытаюсь составить список общих объектов, которые будут содержать различные типы элементов управления формами в общем списке. Я не специалист по дженерикам и никогда раньше не использовал общий список универсальных объектов. Примеры, которые я нашел до сих пор, мне не очень помогли.
Класс UIObject:
public class UIObject<T>
{
public UIObject(string Name, T _Control)
{
ControlName = Name;
ControlObject = _Control;
}
//public Type ControlType;
public T ControlObject;
public String ControlName;
}
Я могу создавать эти объекты так:
UIObject<TextBox> UITextbox = new UIObject<TextBox>("FirstName Textbox", FirstName);
класс UIObjectList, содержащий список UIObject:
public class UIObjectList
{
private List<UIObject<Type>> InterfaceObjects;
public UIObjectList()
{
InterfaceObjects = new List<UIObject<Type>>();
}
//Find an object by name.
public T GetInterfaceObject<T>(string Name)
{
foreach(UIObject<T> obj in InterfaceObjects)
{
if (Name == obj.ControlName) {
return obj.ControlObject;
}
}
return null;
}}
У меня проблемы с классом UIObjectList. Код сейчас в беспорядке, я не знаю, как выполнить то, что пытаюсь сделать, и можно ли это сделать вот так. Функция GetInterfaceObject () должна возвращать UIObject, который может быть текстовым полем, списком, меткой и т. Д. Я не уверен, что делать с этой частью.
Конечная цель - сделать что-то вроде этого:
AddRecord(InterfaceDictionary.GetInterfaceObject("FirstName Textbox").Text);
где InterfaceDictionary - это объект UIObjectList, содержащий объект UITextbox, который я создал выше.
Не стесняйтесь предложить другой метод достижения этой цели, если это не имеет смысла.
Controls
, которое возвращает набор элементов управления, которые этот элемент управления уже содержит. Дело в том, что, возможно, вам не нужен отдельный / новый список; вы можете найти родительский элемент управления, который вам нужен, и использовать его в качестве контейнера. - person Gus   schedule 13.03.2018UIObject
, вы можете использовать его с общим родительским типом в качестве типа для вашего внутреннего списка. Но вы не сможете заставить список выдавать разные типы одним и тем же методом. И в любом случае упаковка таких элементов управления кажется плохой идеей. - person juharr   schedule 13.03.2018