具有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属性。

具有IEnumerable<;懒惰<;T、 T>>;

yield return之后,您应该指定一个元素,并在方法中重复调用该元素,使其返回多个元素。该方法应返回IEnumerable<IBusinessPluginMetadata>

在第一种情况下,将返回类型更改为IEnumerable<IBusinessPluginMetadata>,就可以继续了。

在第二种情况下,Select已经返回了一个迭代器,只需返回即可。