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); } }