Пример #1
0
        private bool AddDependencyPropertyIfDefined(MemberReference member, out string dependencyPropertyNameIfAny)
        {
            dependencyPropertyNameIfAny = null;
            FieldDefinition dependencyPropertyIfAny = null;

            if (member is MethodDefinition)
            {
                MethodDefinition method = (MethodDefinition)member;
                TypeReference    dependencyPropertyTypeIfAny;
                if (CanMethodBeADependencyPropertyAccessor(method, out dependencyPropertyTypeIfAny))
                {
                    string nameOfField = method.Name.Substring(3) + "Property";
                    if (_parentClassAnalyzer.TryGetDependencyPropertyFromFieldName(nameOfField, method.DeclaringType, out dependencyPropertyIfAny))
                    {
                        dependencyPropertyNameIfAny = nameOfField;
                        _parentClassAnalyzer.AddUsing("System.Windows");
                        _parentClassAnalyzer.AddField(dependencyPropertyIfAny, isDependencyProperty: true, isAttachedProperty: true, dependencyPropertyTypeIfAny: dependencyPropertyTypeIfAny, isStatic: true, attachedPropertyNameIfAny: nameOfField);
                        return(true);
                    }
                }
            }
            else if (member is PropertyDefinition)
            {
                PropertyDefinition property    = (PropertyDefinition)member;
                string             nameOfField = property.Name + "Property";
                if (_parentClassAnalyzer.TryGetDependencyPropertyFromFieldName(nameOfField, property.DeclaringType, out dependencyPropertyIfAny))
                {
                    dependencyPropertyNameIfAny = nameOfField;
                    _parentClassAnalyzer.AddUsing("System.Windows");
                    _parentClassAnalyzer.AddField(dependencyPropertyIfAny, isDependencyProperty: true, isAttachedProperty: false, dependencyPropertyTypeIfAny: property.PropertyType, isStatic: true, attachedPropertyNameIfAny: nameOfField);
                    return(true);
                }
            }
            return(false);
        }