C #: Реализация двух абстрактных списков в неуниверсальном классе?

Извините за глупый заголовок, понятия не имею, как это обозначить

Я создаю класс, который имеет два списка одного типа. Он используется для копирования ссылки на объект из первого списка во второй.

Хотя оба списка будут одного типа (содержат объекты одного и того же типа), они могут быть разными каждый раз, когда этот класс инициализируется.

1244] Итак, я предполагаю, что мне следует сделать типы списков как своего рода абстрактный список. Я хотел бы убедиться, что они будут строго типизированы при создании экземпляра (но не обязательно, если возникнут проблемы). Проблема заключается в методе, который перемещает выбранные элементы из списка1 в список2. Типы абстрактных списков обычно не имеют для этого методов.

Я думаю, что нормальным решением было бы сделать класс универсальным (className , но я не уверен, что смогу это сделать (по крайней мере, я не знаю как), потому что этот класс наследует WPF UserControl.

Вот код:

public partial class SubsetSelectionLists : UserControl
{
    public static DependencyProperty SetCollectionProperty = DependencyProperty.Register("SetCollection", typeof("Need a abstract list type here"), typeof(SubsetSelectionLists));
    public static DependencyProperty SubsetCollectionProperty = DependencyProperty.Register("SubsetCollection", typeof("Need a abstract list type here"), typeof(SubsetSelectionLists));

    public "Need a abstract list type here" SetCollection
    {
        get
        {
            return ("Need a abstract list type here") GetValue(SetCollectionProperty);
        }
        set
        {
            SetValue(SetCollectionProperty, value);
        }
    }

    public "Need a abstract list type here" SubsetCollection
    {
        get
        {
            return ("Need a abstract list type here")GetValue(SubsetCollectionProperty);
        }
        set
        {
            SetValue(SubsetCollectionProperty, value);
        }
    }

    public SubsetSelectionLists()
    {
        InitializeComponent();
        SubsetSelectiongrid.DataContext = this;
    }

    private void selectionBtnClick(object sender, RoutedEventArgs e)
    {
        SubsetCollection.AddTheseItems(SET.SelecctedItems)
    }

    private void removeBtnClick(object sender, RoutedEventArgs e)
    {
        SUBSET.RemoveTheseItems(SUBSET.SelectedItem);
    }
}

РЕДАКТИРОВАТЬ: Решение

Некоторые ответы указали мне на оптимальное решение создания универсального класса. Однако в WPF это может быть проблематично. Вам пришлось бы пропустить XAML в универсальном классе верхнего уровня.

Это означало бы, что вы могли бы выполнять XAML в дочерних классах конкретного типа, которые не являются t что-то, что вы хотели бы сделать (если только код не является чем-то, что вы бы использовали повторно, но внешний вид является переменным). Вы также могли бы разработать элемент управления, используя код, я полагаю, но я не уверен, насколько это будет эффективно.

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

6
задан Ingó Vals 2 February 2011 в 13:58
поделиться