Browse Source

Decompile events

pull/728/head
Daniel Grunwald 10 years ago
parent
commit
1c5417400b
  1. 22
      ICSharpCode.Decompiler/CSharp/CSharpDecompiler.cs

22
ICSharpCode.Decompiler/CSharp/CSharpDecompiler.cs

@ -189,6 +189,13 @@ namespace ICSharpCode.Decompiler.CSharp @@ -189,6 +189,13 @@ namespace ICSharpCode.Decompiler.CSharp
typeDecl.Members.Add(propDecl);
}
}
foreach (var @event in typeDef.Events) {
var eventDef = typeSystem.GetCecil(@event) as EventDefinition;
if (eventDef != null) {
var eventDecl = DoDecompile(eventDef, @event, decompilationContext.WithCurrentMember(@event));
typeDecl.Members.Add(eventDecl);
}
}
foreach (var method in typeDef.Methods) {
var methodDef = typeSystem.GetCecil(method) as MethodDefinition;
if (methodDef != null) {
@ -321,5 +328,20 @@ namespace ICSharpCode.Decompiler.CSharp @@ -321,5 +328,20 @@ namespace ICSharpCode.Decompiler.CSharp
}
return entityDecl;
}
EntityDeclaration DoDecompile(EventDefinition propertyDefinition, IEvent ev, ITypeResolveContext decompilationContext)
{
Debug.Assert(decompilationContext.CurrentMember == ev);
var typeSystemAstBuilder = CreateAstBuilder(decompilationContext);
typeSystemAstBuilder.UseCustomEvents = true;
var eventDecl = (CustomEventDeclaration)typeSystemAstBuilder.ConvertEntity(ev);
if (propertyDefinition.AddMethod != null && propertyDefinition.AddMethod.HasBody) {
DecompileBody(propertyDefinition.AddMethod, ev.AddAccessor, eventDecl.AddAccessor, decompilationContext, typeSystemAstBuilder);
}
if (propertyDefinition.RemoveMethod != null && propertyDefinition.RemoveMethod.HasBody) {
DecompileBody(propertyDefinition.RemoveMethod, ev.RemoveAccessor, eventDecl.RemoveAccessor, decompilationContext, typeSystemAstBuilder);
}
return eventDecl;
}
}
}

Loading…
Cancel
Save