多くのクラスが継承するSCOという基本クラスがあります。最初はコレクションを並べ替えたかったのですが、いくつかの推奨事項に基づいて、1つの方法でコレクションをインスタンス化して並べ替えることができるようです。
私はすべての基本クラスが継承するこのコンストラクターを持っています:
public SCO(SPListItem item, List<Vote> votes)
{
UpVotes = voteMeta.UpVotes;
DownVotes = voteMeta.DownVotes;
VoteTotal = UpVotes - DownVotes;
HotScore = Calculation.HotScore(Convert.ToInt32(UpVotes), Convert.ToInt32(DownVotes), Convert.ToDateTime(item["Created"]));
}
これは私が立ち往生しているところです。インスタンス化できません<T>
。
public static List<T> SortedCollection<T>(SPListItemCollection items, ListSortType sortType, List<Vote> votes) where T : SCO
{
var returnlist = new List<T>();
for (int i = 0; i < items.Count; i++) { returnlist.Add(new T(items[i], votes)); }
switch (sortType)
{
// Sort List based on passed ENUM
}
return returnlist;
}
これらすべてを1つの方法で実行できれば、コストのかかるキャスティングとボクシングを回避できます。