Или вы можете попробовать этот метод расширения, чтобы упростить его.
public static class MyExtensions {
public static IEnumerable<T> ItemsAs<T>(this NSSet set) where T : NSObject {
List<T> res = new List<T>();
set.Enumerate( delegate( NSObject obj, ref bool stop ) {
T item = (T)( obj ); // Executed only once, not 3 times
if ( item != null ) {
res.Add (item);
stop = false; // inside the null check
}
});
return res;
}
}
Затем вы можете сделать что-то вроде:
foreach(BarcodeResult foundCode in results.ItemsAs<BarcodeResult>()) {
controller.BarcodeScannedResult (foundCode);
}
Примечание: имейте в виду, что это создает другой списоки копирует в него все, что менее эффективно.Я сделал это, потому что «возвращение результата» недопустимо в анонимных методах, и альтернативные способы сделать его настоящим перечислителем без копии были намного большим количеством кода.Большинство наборов, с которыми я имею дело, крошечные, так что это не имеет значения, но если у вас большой набор, это не идеально.