具有IEnumerable<;懒惰<;T、 T>>;
本文关键字:gt lt 懒惰 具有 IEnumerable | 更新日期: 2023-09-27 18:22:34
为什么两个方法在编译时都失败了?
错误1的正文'测试方法(System.Collections.Generic.IEnumerable>)'不能是迭代器块,因为"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属性。
yield return
之后,您应该指定一个元素,并在方法中重复调用该元素,使其返回多个元素。该方法应返回IEnumerable<IBusinessPluginMetadata>
。
在第一种情况下,将返回类型更改为IEnumerable<IBusinessPluginMetadata>
,就可以继续了。
在第二种情况下,Select
已经返回了一个迭代器,只需返回即可。