Есть некоторый код, который я пытаюсь преобразовать из 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()
).
Есть ли другой способ заставить работать выход в этом сценарии?