我正在尝试将一些代码转换IList
为IEnumerable
:
[Something(123)]
public IEnumerable<Foo> GetAllFoos()
{
SetupSomething();
DataReader dr = RunSomething();
while (dr.Read())
{
yield return Factory.Create(dr);
}
}
问题是,SetupSomething()
来自基类并使用:
Attribute.GetCustomAttribute(
new StackTrace().GetFrame(1).GetMethod(), typeof(Something))
yield
最终创建MoveNext()
,MoveNext()
调用SetupSomething()
,并且MoveNext()
没有[Something(123)]
属性。
我无法更改基类,因此看来我被迫保留IList
或IEnumerable
手动实现(并将属性添加到MoveNext()
)。
在这种情况下,有没有其他方法可以使产量起作用?