我有一个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;
}
如您所见,它存储了一个对象的两个副本(NewState
和OldState
)。我用它来比较字段变化。
我现在正试图让它工作,我得到一个跨多个对象的更改列表,然后将几种不同类型的 T 列表连接到一个这样的数组中(注意:两者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 行的建议都会给我一个编译器错误(我假设我必须以某种特殊的方式进行转换才能使其工作)。
有没有办法做到这一点?