Esempio n. 1
0
        private void GetOrCreateAttachableProperties(XamlSchemaContext schemaContext, List <XamlMember> result,
                                                     Dictionary <string, List <MethodInfo> > getters, Dictionary <string, List <MethodInfo> > setters)
        {
            foreach (KeyValuePair <string, List <MethodInfo> > nameAndSetterList in setters)
            {
                string     name   = nameAndSetterList.Key;
                XamlMember member = null;
                if (!_attachableMemberCache.TryGetValue(name, out member))
                {
                    List <MethodInfo> getterList;
                    getters.TryGetValue(name, out getterList);

                    // removing the current entry from getters dictionary because it is not needed anymore
                    getters.Remove(name);
                    MethodInfo getter, setter;
                    PickAttachablePropertyAccessors(getterList, nameAndSetterList.Value, out getter, out setter);
                    member = schemaContext.GetAttachableProperty(name, getter, setter);
                    // Filter out read-only properties except for dictionaries and collections
                    if (member.IsReadOnly && !member.Type.IsUsableAsReadOnly)
                    {
                        member = null;
                    }
                }
                if (member != null)
                {
                    result.Add(member);
                }
            }

            foreach (KeyValuePair <string, List <MethodInfo> > nameAndGetterList in getters)
            {
                string     name   = nameAndGetterList.Key;
                XamlMember member = null;
                if (!_attachableMemberCache.TryGetValue(name, out member))
                {
                    member = schemaContext.GetAttachableProperty(name, nameAndGetterList.Value[0], null);
                }
                result.Add(member);
            }
        }
 private void GetOrCreateAttachableProperties(XamlSchemaContext schemaContext, List <XamlMember> result, Dictionary <string, List <MethodInfo> > getters, Dictionary <string, List <MethodInfo> > setters)
 {
     foreach (KeyValuePair <string, List <MethodInfo> > pair in setters)
     {
         string     key    = pair.Key;
         XamlMember member = null;
         if (!this._attachableMemberCache.TryGetValue(key, out member))
         {
             List <MethodInfo> list;
             MethodInfo        info;
             MethodInfo        info2;
             getters.TryGetValue(key, out list);
             getters.Remove(key);
             this.PickAttachablePropertyAccessors(list, pair.Value, out info, out info2);
             member = schemaContext.GetAttachableProperty(key, info, info2);
             if (member.IsReadOnly && !member.Type.IsUsableAsReadOnly)
             {
                 member = null;
             }
         }
         if (member != null)
         {
             result.Add(member);
         }
     }
     foreach (KeyValuePair <string, List <MethodInfo> > pair2 in getters)
     {
         string     name    = pair2.Key;
         XamlMember member2 = null;
         if (!this._attachableMemberCache.TryGetValue(name, out member2))
         {
             member2 = schemaContext.GetAttachableProperty(name, pair2.Value[0], null);
         }
         result.Add(member2);
     }
 }