我想为我拥有的自定义通用集合创建一组类似于 .ToList<>() 的扩展。
这是我拥有的对象
AceDataObjectCollection<T> : ICollection<T> where T : IAceDataObject
IAceDataBlock : IAceDataObject
IAceMessage : IAceDataObject
我想做这个。
AceDataObjectCollection<IAceDataObject> objects = new AceDataObjectCollection<IAceDataObject>();
objects.Add(...) // Add different data objects here
AceDataObjectCollection<IAceMessage> messages = objects.Where(o => o is IAceMessage).ToAceDataObjectCollection<IAceMessage>();
我似乎无法弄清楚如何使用泛型正确形成扩展。
最佳答案
我相信这就是您正在寻找的。p>
public static AceDataObjectCollection<T> ToAceDataObjectCollection<T>(this IEnumerable<T> col) where T : IAceDataObject
{
AceDataObjectCollection<T> objects = new AceDataObjectCollection<T>();
foreach (T item in col)
objects.Add(item);
return objects;
}
关于c# - 通用扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8053688/