Извините за глупый заголовок, понятия не имею, как это обозначить
Я создаю класс, который имеет два списка одного типа. Он используется для копирования ссылки на объект из первого списка во второй.
Хотя оба списка будут одного типа (содержат объекты одного и того же типа), они могут быть разными каждый раз, когда этот класс инициализируется.
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, который является абстрактным списком, от которого наследуются многие другие, и я собираюсь использовать. Это немного похоже на взлом, но, поскольку он не будет использоваться в открытой библиотеке, я согласен. В противном случае я бы использовал Общий маршрут.