public IEnumerable<KeyValuePair<string, object>>/*!*/ GetItems() {
for (int i = 0; i < _data.Length; i++) {
yield return new KeyValuePair<string, object>(StructInfo.GetName(i), _data[i]);
}
}
public static object EachPair(BlockParam block, RubyStruct/*!*/ self) { if (block == null && self.ItemCount > 0) { throw RubyExceptions.NoBlockGiven(); } var context = self.ImmediateClass.Context; foreach (KeyValuePair<string, object> entry in self.GetItems()) { object result; if (block.Yield(context.EncodeIdentifier(entry.Key), entry.Value, out result)) { return result; } } return self; }