ItemChange<T>
次のようなクラスがあります。
public class ItemChange<T> where T : MyBase
{
public DateTime When { get; set; }
public string Who { get; set; }
public T NewState;
public T OldState;
}
ご覧のとおり、オブジェクトの2つのコピー(NewState
およびOldState
)が格納されています。これを使用して、フィールドの変更を比較します。
私は今、これを機能させようとしています。ここでは、複数のオブジェクトにわたる変更のリストを取得し、いくつかの異なるタイプのTリストを次のように1つの配列に連結します(注:両方Object1
とObject2
派生MyBase
:
public IEnumerable<ItemChange<T>> GetChangeHistory<T>(int numberOfChanges) where T : MyBase
{
IEnumerable<ItemChange<Object1>> obj1Changes= GetChanges<Object1>();
IEnumerable<ItemChange<Object2>> obj1Changes= GetChanges<Object2>();
return obj1Changes.Concat(obj2Changes).OrderByDescending(r => r.When).Take(numberofChanges);
}
ご覧のとおり、複数のタイプからの変更を連結する必要がありますが、最新の変更数(で定義numberOfChanges
)を取得したいと思います。
Concat行でコンパイラエラーが発生するため、以下を機能させる方法についての提案があります(これを機能させるには、特別な方法でキャストする必要があると思います)。
それを行う方法はありますか?