我正在尝试创建一个隐式转换,使我可以使用LINQ结果直接返回MyCollection
。
public class MyCollection : ICollection<MyType>
{
private List<MyType> _list = new List<MyType>();
public MyCollection(IEnumerable<MyType> collection)
{
_list = new List<MyType>(collection);
}
public static implicit operator MyCollection(IEnumerable<MyType> collection)
{
return new MyCollection(collection);
}
// collection methods excluded for brevity
public MyCollection Filter(string filter)
{
return _list.Where(obj => obj.Filter.Equals(filter)); // cannot implicitly convert
}
}
我以前没有尝试过使用隐式用户定义的转换,我做错了什么?
MyType
本身就是一个接口,那么这肯定只是一个重复的实现。我只是在MyCollection
上实现了一个接口。 - AlexMyType
进行转换,而是从IEnumerable<MyType>
进行转换,而IEnumerable<MyType>
是一个接口。 - Jon Hanna