Проблема с использованием методов итератора C # с безопасностью доступа к коду

У меня есть простой метод, который использует блок итератора для возврата IEnumerable :

IEnumerable<MyItem> GetItems()
{
    foreach (var item in Items)
    {
        yield return item;
    }
}

Обычно этот метод работает нормально, но если я применяю [ SecurityCritical] для сборки (или для класса, содержащего указанный выше метод), он выдает исключение TypeLoadException при попытке вызвать метод. Тип, который не загружается, - это созданный компилятором класс, соответствующий методу итератора, и именно его метод GetEnumerator вызывает проблему, поскольку он прозрачен с точки зрения безопасности.

Для сравнения: если я изменю вышеуказанный метод так, чтобы он заполнял и возвращал List , все будет работать нормально.

Есть предложения?

Спасибо,

Тим.

7
задан Tim Coulter 25 November 2010 в 14:18
поделиться