private void InitCurrBindables(MemberBindProvider target, bool isForSetter) { if (this.currBindables != null && this.currBindableLabels != null) { return; } Dictionary <string, BindableData> dictionary = isForSetter ? MemberBindProviderEd.setterBindables : MemberBindProviderEd.getterBindables; this.currBindables = new BindableData[dictionary.Count]; dictionary.Values.CopyTo(this.currBindables, 0); this.currBindableLabels = new GUIContent[this.currBindables.Length]; for (int i = 0; i < this.currBindables.Length; i++) { this.currBindableLabels[i] = new GUIContent(this.currBindables[i].visibleName); } this.memberBindIdx = -1; BloxMemberInfo member = target.member; string memberName = MemberBindProviderEd.GetMemberName((member != null) ? member.MI : null); if (!string.IsNullOrEmpty(memberName)) { int num = 0; while (num < this.currBindables.Length) { if (!(memberName == this.currBindables[num].visibleName)) { num++; continue; } this.memberBindIdx = num; break; } } if (target.sourceObjType == MemberBindProvider.DataSourceOject.Instance && target.member != null) { this.InitSubBindables(target, target.member.ReflectedType); } }
private static void ProcessBindableMember(MemberInfo mi, Type valType, bool inclOnlySpecifiedMembers) { Debug.Log("ProcessBindableMember", "MemberBindProviderEd", Color.red); bool flag = inclOnlySpecifiedMembers; object[] customAttributes = mi.GetCustomAttributes(true); for (int i = 0; i < customAttributes.Length; i++) { Type type = customAttributes[i].GetType(); if (type == typeof(IncludeInBloxAttribute)) { flag = false; } if (type == typeof(ExcludeFromBloxAttribute)) { flag = true; break; } if (type == typeof(BloxEventAttribute)) { flag = true; break; } if (type == typeof(ObsoleteAttribute)) { flag = true; break; } if (type == typeof(ExcludeFromDocsAttribute)) { flag = true; break; } } if (!flag) { Type _ = mi.ReflectedType; string memberName = MemberBindProviderEd.GetMemberName(mi); BloxMemberInfo bloxMemberInfo = new BloxMemberInfo(mi, null); if (bloxMemberInfo.CanGetValue && valType != null && valType != typeof(void) && !MemberBindProviderEd.getterBindables.ContainsKey(memberName)) { MemberBindProviderEd.getterBindables.Add(memberName, new BindableData { visibleName = memberName, mi = bloxMemberInfo, type = valType }); } if (!bloxMemberInfo.CanSetValue && bloxMemberInfo.MemberType != MemberTypes.Method) { return; } if (!MemberBindProviderEd.setterBindables.ContainsKey(memberName)) { MemberBindProviderEd.setterBindables.Add(memberName, new BindableData { visibleName = memberName, mi = bloxMemberInfo, type = ((bloxMemberInfo.MemberType == MemberTypes.Method) ? typeof(object) : valType) }); } } }