Skip to content
This repository was archived by the owner on Oct 16, 2020. It is now read-only.

Commit 69bef7e

Browse files
fix #451: InvalidOperationException when creating event handler for Slider.ValueChanged
1 parent 0f39728 commit 69bef7e

1 file changed

Lines changed: 5 additions & 2 deletions

File tree

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,10 @@ public override void InsertEventHandler(ITypeDefinition target, string name, IEv
8686
var node = context.RootNode.GetNodeAt<EntityDeclaration>(last.Region.Begin);
8787
var resolver = context.GetResolverStateAfter(node);
8888
var builder = new TypeSystemAstBuilder(resolver);
89-
var delegateDecl = builder.ConvertEntity(eventDefinition.ReturnType.GetDefinition()) as DelegateDeclaration;
89+
var invokeMethod = eventDefinition.ReturnType.GetDelegateInvokeMethod();
90+
if (invokeMethod == null) return;
91+
var importedMethod = resolver.Compilation.Import(invokeMethod);
92+
var delegateDecl = builder.ConvertEntity(importedMethod) as MethodDeclaration;
9093
if (delegateDecl == null) return;
9194
var throwStmt = new ThrowStatement(new ObjectCreateExpression(context.CreateShortType("System", "NotImplementedException")));
9295
var decl = new MethodDeclaration() {
@@ -96,7 +99,7 @@ public override void InsertEventHandler(ITypeDefinition target, string name, IEv
9699
throwStmt
97100
}
98101
};
99-
var param = delegateDecl.Parameters.Select(p => p.Clone()).OfType<ParameterDeclaration>().ToArray();
102+
var param = delegateDecl.Parameters.Select(p => p.Clone()).ToArray();
100103
decl.Parameters.AddRange(param);
101104

102105
using (Script script = context.StartScript()) {

0 commit comments

Comments
 (0)