У меня есть простой метод, который использует блок итератора, чтобы возвращать IEnumerable<T>
:Проблемные методы с использованием C# итераторы с доступом для кода
IEnumerable<MyItem> GetItems()
{
foreach (var item in Items)
{
yield return item;
}
}
Обычно этот метод работает отлично, но если я применить атрибут [SecurityCritical]
к assembly (или классу, который содержит вышеупомянутый метод), он бросает TypeLoadException
при попытке вызвать метод. Тип, который не загружается, - это класс, сгенерированный компилятором, который соответствует методу итератора, и это его метод GetEnumerator
, который вызывает проблему, поскольку это прозрачность безопасности.
Для сравнения, если я модифицирую вышеуказанный метод, чтобы он заполнил и возвращает List<MyItem>
, все будет хорошо.
Любые предложения?
Thanks,
Tim.
Возможно, `[SecurityCritical]` пытается сказать вам, что вы не используете `var` и более специфичны для конкретного типа? – BeemerGuy 2010-11-25 14:24:03