int AddOnChangedMethodCall(int index, PropertyDefinition property)
{
if (!moduleWeaver.InjectOnPropertyNameChanged)
{
return index;
}
var onChangedMethodName = $"On{property.Name}Changed";
if (ContainsCallToMethod(onChangedMethodName))
{
return index;
}
var onChangedMethod = typeNode
.OnChangedMethods
.FirstOrDefault(x => x.MethodReference.Name == onChangedMethodName);
if (onChangedMethod == null)
{
return index;
}
if (onChangedMethod.OnChangedType == OnChangedTypes.NoArg)
{
return AddSimpleOnChangedCall(index, onChangedMethod.MethodReference);
}
if (onChangedMethod.OnChangedType == OnChangedTypes.BeforeAfter)
{
return AddBeforeAfterOnChangedCall(index, property, onChangedMethod.MethodReference);
}
return index;
}