Browse Source

fix #451: InvalidOperationException when creating event handler for Slider.ValueChanged

pull/499/head
Siegfried Pammer 11 years ago
parent
commit
69bef7e8e9
  1. 7
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CSharpCodeGenerator.cs

7
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CSharpCodeGenerator.cs

@ -86,7 +86,10 @@ namespace CSharpBinding.Refactoring
var node = context.RootNode.GetNodeAt<EntityDeclaration>(last.Region.Begin); var node = context.RootNode.GetNodeAt<EntityDeclaration>(last.Region.Begin);
var resolver = context.GetResolverStateAfter(node); var resolver = context.GetResolverStateAfter(node);
var builder = new TypeSystemAstBuilder(resolver); var builder = new TypeSystemAstBuilder(resolver);
var delegateDecl = builder.ConvertEntity(eventDefinition.ReturnType.GetDefinition()) as DelegateDeclaration; var invokeMethod = eventDefinition.ReturnType.GetDelegateInvokeMethod();
if (invokeMethod == null) return;
var importedMethod = resolver.Compilation.Import(invokeMethod);
var delegateDecl = builder.ConvertEntity(importedMethod) as MethodDeclaration;
if (delegateDecl == null) return; if (delegateDecl == null) return;
var throwStmt = new ThrowStatement(new ObjectCreateExpression(context.CreateShortType("System", "NotImplementedException"))); var throwStmt = new ThrowStatement(new ObjectCreateExpression(context.CreateShortType("System", "NotImplementedException")));
var decl = new MethodDeclaration() { var decl = new MethodDeclaration() {
@ -96,7 +99,7 @@ namespace CSharpBinding.Refactoring
throwStmt throwStmt
} }
}; };
var param = delegateDecl.Parameters.Select(p => p.Clone()).OfType<ParameterDeclaration>().ToArray(); var param = delegateDecl.Parameters.Select(p => p.Clone()).ToArray();
decl.Parameters.AddRange(param); decl.Parameters.AddRange(param);
using (Script script = context.StartScript()) { using (Script script = context.StartScript()) {

Loading…
Cancel
Save