BTW, I've read a article that said change Element.xml Synchronization to Synchronous, we can get BeforeProperties on List events, but I cannot find this reference now.
I'll make some test to confirm it. (Maybe many days or months later......)
List:
List | BeforeProperties | AfterProperties | properties.ListItem |
ItemAdding | No value | New value | Null |
ItemAdded | No value | New value | New value |
ItemUpdating | No value | Changed value | Original value |
ItemUpdated | No value | Changed value | Changed value |
ItemDeleting | No value | No value | Original value |
ItemDeleted | No value | No value | Null |
Library:
Library | BeforeProperties | AfterProperties | properties.ListItem |
ItemAdding | No value | No value | Null |
ItemAdded | No value | No value | New value |
ItemUpdating | Original value | Changed value | Original value |
ItemUpdated | Original value | Changed value | Changed value |
ItemDeleting | No value | No value | Original value |
ItemDeleted | No value | No value | Null |
Reference:
BeforeProperties and AfterProperties in Sharepoint Event Receivers
SPEventReceiverDefinition.Synchronization Property