【发布时间】:2014-04-19 14:04:46
【问题描述】:
我正在尝试创建一个隐式转换,允许我使用 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上实现一个接口 -
你不是从
MyType投射,你是从IEnumerable<MyType>投射,IEnumerable<MyType>是一个接口。 -
啊,是的,感谢您的回答,我现在明白了
-
尽管将其标记为重复,但必须说 Jon 下面的答案比原始问题中的答案更详细(希望有帮助)