汎用リストを使用しているため、コンパイラはそれをチェックします。例えば
:あなたは
List<Object> list = new List<Object>();
var newlist = list.Orderby(x=>x.property1).ThenOrderBy(x=>x.property2);
のようなコードを書いた場合、コンパイラは、オブジェクトの種類にこれらのプロパティを見つけることができませんので、あなたは、プロパティ1 & property2にコンパイルエラーを取得します。
それぞれが2つのプロパティを持つ必要がある異なるタイプをサポートしたい場合は、2つのプロパティを持つインターフェイスを作成し、サポートする各タイプにそのインターフェイスを実装させてから、 Arturoが提案したようなTに。このメソッドは、インタフェースICanBeSortedを実装するすべての種類を並べ替えることができるようになります
interface ICanBeSorted
{
string property1 {get;}
string property2 {get;
}
public List<T> MySortMethod(List<T> list) where T : ICanBeSorted
{
return list.OrderBy(x=>x.property1).ThenOrderBy(x=>x.property2);
}
よう
何か。
これらのプロパティがインターフェイスまたはクラスに属する場合は、T –
で制約を使用できます。コンパイラがそれを行います。存在しない場合、コンパイルは失敗します。 – Andrey
あなたは 'List'を意味しますか? –
Xiaoy312