Skip to content

Instantly share code, notes, and snippets.

@einarwh
Created April 28, 2012 19:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save einarwh/2521405 to your computer and use it in GitHub Desktop.
Save einarwh/2521405 to your computer and use it in GitHub Desktop.
Code to inject event handler, without hookup methods.
private void InjectEventHandler()
{
InjectPropertyChangedField();
InjectEventDeclaration();
}
private void InjectPropertyChangedField()
{
//.field private class [System]System.ComponentModel.PropertyChangedEventHandler PropertyChanged
var field = new FieldDefinition(PropertyChangedFieldName,
FieldAttributes.Private,
_types.PropertyChangedEventHandler);
_typeDef.Fields.Add(field);
}
private void InjectEventDeclaration()
{
// .event [System]System.ComponentModel.PropertyChangedEventHandler PropertyChanged
// {
// .addon instance void Voodoo.ViewModel.GoalViewModel::add_PropertyChanged(class [System]System.ComponentModel.PropertyChangedEventHandler)
// .removeon instance void Voodoo.ViewModel.GoalViewModel::remove_PropertyChanged(class [System]System.ComponentModel.PropertyChangedEventHandler)
// }
var eventDef = new EventDefinition(PropertyChangedFieldName,
EventAttributes.None,
_types.PropertyChangedEventHandler)
{
AddMethod = CreateAddPropertyChangedMethod(),
RemoveMethod = CreateRemovePropertyChangedMethod()
};
_typeDef.Methods.Add(eventDef.AddMethod);
_typeDef.Methods.Add(eventDef.RemoveMethod);
_typeDef.Events.Add(eventDef);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment