Общий список универсальных объектов C #

Я пытаюсь составить список общих объектов, которые будут содержать различные типы элементов управления формами в общем списке. Я не специалист по дженерикам и никогда раньше не использовал общий список универсальных объектов. Примеры, которые я нашел до сих пор, мне не очень помогли.

Класс 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, который я создал выше.

Не стесняйтесь предложить другой метод достижения этой цели, если это не имеет смысла.


person Community    schedule 13.03.2018    source источник
comment
Пожалуйста, включите то, что вы читали по этой теме. В остальном заголовок этого вопроса почти такой же, как Общий список общих объектов   -  person Heretic Monkey    schedule 13.03.2018
comment
Ваш общий класс мало что дает. У элементов управления уже есть название.   -  person    schedule 13.03.2018
comment
Каждый элемент пользовательского интерфейса уже является элементом управления (msdn.microsoft.com/en-us/library/), у которого есть свойство Controls, которое возвращает набор элементов управления, которые этот элемент управления уже содержит. Дело в том, что, возможно, вам не нужен отдельный / новый список; вы можете найти родительский элемент управления, который вам нужен, и использовать его в качестве контейнера.   -  person Gus    schedule 13.03.2018
comment
Если вы создадите совместный общий интерфейс для UIObject, вы можете использовать его с общим родительским типом в качестве типа для вашего внутреннего списка. Но вы не сможете заставить список выдавать разные типы одним и тем же методом. И в любом случае упаковка таких элементов управления кажется плохой идеей.   -  person juharr    schedule 13.03.2018