愚かなタイトルについて申し訳ありませんが、これをどのように言いたいのか分かりませんでした。C#:非ジェネリッククラス内の2つの抽象リストの実装?
私は同じタイプの2つのリストを持つクラスを作成しています。これは、最初のリストのオブジェクトへの参照を2番目のリストにコピーするために使用されます。
両方のリストは同じ型(オブジェクトの同じ型を保持)ですが、このクラスが初期化されるたびに異なることがあります。
私はリストタイプを抽象リストのようなものにする必要があると推測しています。インスタンス化されたときに強く型付けされていることを確認したいと思います(ただし、問題がある場合は必要ありません)。問題は、選択された項目をlist1からlist2に移動するメソッドの中にあります。抽象リスト型は通常、そのためのメソッドを持っていません。
私は、このクラスがWPF UserControlを継承しているので、クラスを汎用(className <T>
thingy)にするのが普通だと思いますが、私はそれを行うことができません。
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);
}
}
EDIT:ここ
はコードであるソリューション
いくつかの答えは、ジェネリッククラスを作成するのに最適な解決に向けて、私を指摘しました。しかし、これはWPFで問題になる可能性があります。トップレベルのジェネリッククラスでXAMLをスキップする必要があります。
これは、あなたがやりたいことではないタイプ固有の子クラスでXAMLを行うことができるということを意味します(コードだけを再利用するが、外観は可変でない限り)。あなたは、私が推測するコードを使ってコントロールを設計することもできましたが、どのように効果的かはわかりません。
私は、他の多くの人が継承している抽象リストであるIListオブジェクトを指していました。私は使用しようとしています。これは少しハックですが、オープンライブラリーでは使用されないので、私はそれで大丈夫です。それ以外の場合は、Generic Routeを使用します。
linqで実行できない理由がありますか? .netのバージョンに制限がありますか? – phillip
どのような.netバージョン。 Linqとジェネリックスはそれを行うことができるはずです – Hawxby
linqが私にここで助けてくれるのか分かりませんか?どのようにして答えをしてください。私は.net 3.5を使用していますが、おそらく4.0にアップグレードします –