Catel.Fody.CatelTypeProperty.TryGetField C# (CSharp) Method

TryGetField() private static method

private static TryGetField ( Mono.Cecil.TypeDefinition typeDefinition, Mono.Cecil.PropertyDefinition property ) : FieldDefinition
typeDefinition Mono.Cecil.TypeDefinition
property Mono.Cecil.PropertyDefinition
return Mono.Cecil.FieldDefinition
        private static FieldDefinition TryGetField(TypeDefinition typeDefinition, PropertyDefinition property)
        {
            var propertyName = property.Name;
            var fieldsWithSameType = typeDefinition.Fields.Where(x => x.DeclaringType == typeDefinition).ToList();
            foreach (var field in fieldsWithSameType)
            {
                //AutoProp
                if (field.Name == $"<{propertyName}>k__BackingField")
                {
                    return field;
                }
            }

            foreach (var field in fieldsWithSameType)
            {
                //diffCase
                var upperPropertyName = propertyName.ToUpper();
                var fieldUpper = field.Name.ToUpper();
                if (fieldUpper == upperPropertyName)
                {
                    return field;
                }
                //underScore
                if (fieldUpper == "_" + upperPropertyName)
                {
                    return field;
                }
            }
            return GetSingleField(property);
        }