Created
April 28, 2012 19:11
-
-
Save einarwh/2521405 to your computer and use it in GitHub Desktop.
Code to inject event handler, without hookup methods.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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