为什么两种方法在编译时都失败了?
错误1的身体 'TestMethod的(System.Collections.Generic.IEnumerable&GT)' 不能成为迭代器块因为 'Core.Interfaces.IBusinessPluginMetadata'不是迭代器接口 键入...
IBusinessPluginMetadata TestMethod(IEnumerable<Lazy<IBusinessPlugin, IBusinessPluginMetadata>> plugins)
{
foreach (Lazy<IBusinessPlugin, IBusinessPluginMetadata> plugin in plugins)
{
yield return (IBusinessPluginMetadata)plugin.Metadata;
}
}
IBusinessPluginMetadata TestMethod(IEnumerable<Lazy<IBusinessPlugin, IBusinessPluginMetadata>> plugins)
{
yield return plugins.Select(a => a.Metadata);
}
<!-- language: c# -->
public virtual ObservableCollection<IBusinessPluginMetadata> PluginsMetadata { get { } }
<!-->
我想使用其中一种方法使用get访问器来填充我的ObservableCollection属性。
答案 0 :(得分:0)
在yield return
之后,您应该指定一个元素并在方法中重复调用它以使其返回多个元素。该方法应返回IEnumerable<IBusinessPluginMetadata>
。
在第一种情况下,将退货类型更改为IEnumerable<IBusinessPluginMetadata>
,您就可以了。
在你的第二种情况下,Select
已经返回一个迭代器,只需返回它。