C# 泛型扩展
我想为我拥有的自定义泛型集合创建一组类似于.ToList()的扩展 这是我的物品C# 泛型扩展,c#,.net,extension-methods,C#,.net,Extension Methods,我想为我拥有的自定义泛型集合创建一组类似于.ToList()的扩展 这是我的物品 AceDataObjectCollection<T> : ICollection<T> where T : IAceDataObject IAceDataBlock : IAceDataObject IAceMessage : IAceDataObject AceDataObjectCollection:ICollection其中T:IAceDataObject IAceDataBlock
AceDataObjectCollection<T> : ICollection<T> where T : IAceDataObject
IAceDataBlock : IAceDataObject
IAceMessage : IAceDataObject
AceDataObjectCollection:ICollection其中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>();
AceDataObjectCollection objects=新的AceDataObjectCollection();
objects.Add(…)//在此处添加不同的数据对象
AceDataObjectCollection messages=objects.Where(o=>o是IAceMessage.ToAceDataObjectCollection();
我似乎不知道如何用泛型正确地形成扩展。我相信这就是您要寻找的
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;
}
publicstaticacedataobjectcollection到AceDataObjectCollection(此IEnumerable列),其中T:IAceDataObject
{
AceDataObjectCollection对象=新的AceDataObjectCollection();
foreach(列中的T项)
对象。添加(项);
归还物品;
}
有点离题,但您可能对类型的LINQ方法感兴趣。因此,您可以直接说.OfType()
这正是我所需要的,而不是您的Where
调用。我错过了“where T:iacedaotobject”部分。非常感谢。