private bool TryGetClrField(Type/*!*/ type, BindingFlags bindingFlags, bool isWrite, string/*!*/ name, out RubyMemberInfo method) { FieldInfo fieldInfo = type.GetField(name, bindingFlags); if (fieldInfo != null && IsVisible(fieldInfo) && (!isWrite || IsWriteable(fieldInfo))) { // creates detached info if only declared members are requested (used by Kernel#clr_member): bool createDetached = (bindingFlags & BindingFlags.DeclaredOnly) != 0; method = new RubyFieldInfo(fieldInfo, RubyMemberFlags.Public, this, isWrite, createDetached); return true; } method = null; return false; }
private bool TryGetClrField(Type/*!*/ type, BindingFlags bindingFlags, bool inherited, bool isWrite, string/*!*/ name, out RubyMemberInfo method) { FieldInfo fieldInfo; if (inherited) { fieldInfo = type.GetInheritedFields(name).WithBindingFlags(bindingFlags).FirstOrDefault(); } else { fieldInfo = type.GetDeclaredField(name).WithBindingFlags(bindingFlags); } if (fieldInfo != null && IsVisible(fieldInfo) && (!isWrite || IsWriteable(fieldInfo))) { // creates detached info if only declared members are requested (used by Kernel#clr_member): method = new RubyFieldInfo(fieldInfo, RubyMemberFlags.Public, this, isWrite, isDetached: inherited); return true; } method = null; return false; }
private bool TryGetClrField(Type/*!*/ type, BindingFlags bindingFlags, bool isWrite, string/*!*/ name, out RubyMemberInfo method) { FieldInfo fieldInfo = type.GetField(name, bindingFlags); if (fieldInfo != null && IsVisible(fieldInfo) && (!isWrite || IsWriteable(fieldInfo))) { method = new RubyFieldInfo(fieldInfo, RubyMemberFlags.Public, this, isWrite); return true; } method = null; return false; }