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