public string CheckForErrors(PropertyData propertyData, bool isBeforeAfter)
{
var propertyDefinition = propertyData.PropertyDefinition;
if (propertyDefinition.SetMethod.Name == "set_Item" && propertyDefinition.SetMethod.Parameters.Count == 2 && propertyDefinition.SetMethod.Parameters[1].Name == "value")
{
return "Property is an indexer.";
}
if (propertyDefinition.SetMethod.IsAbstract)
{
return "Property is abstract.";
}
if (propertyData.CheckForEquality && (propertyData.BackingFieldReference == null) && (propertyDefinition.GetMethod == null))
{
return "When using CheckForEquality the property set must contain code that sets the backing field or have a property Get. Either the property contains no field set or it contains multiple sets and the names cannot be mapped to a property.";
}
if (isBeforeAfter && (propertyDefinition.GetMethod == null))
{
return "When using a before/after invoker the property have a 'get'.";
}
return null;
}