Exemple #1
0
        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);
            }
        }
Exemple #2
0
        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)
                    });
                }
            }
        }