This repository was archived by the owner on Apr 24, 2024. It is now read-only.
forked from IronLanguages/ironpython3
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDelegateTest.cs
More file actions
115 lines (92 loc) · 4.49 KB
/
DelegateTest.cs
File metadata and controls
115 lines (92 loc) · 4.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information.
using System;
namespace IronPythonTest {
public delegate void ParamsDelegate(object sender, params object[] args);
public delegate void BigParamsDelegate(object sender, object a, object b, object c, object d, params object[] args);
public delegate void OutDelegate(object sender, out object res);
public delegate void RefDelegate(object sender, ref object res);
public delegate string OutReturnDelegate(object sender, out object res);
public delegate int RefReturnDelegate(object sender, ref object res);
public delegate void SimpleDelegate();
public delegate void SimpleDelegateWithOneArg(object arg1);
public delegate object SimpleReturnDelegate();
public delegate object SimpleReturnDelegateArg1(object arg1);
public delegate object SimpleReturnDelegateArg2(object arg1, object arg2);
public delegate object IntArgDelegate(int arg1, int arg2);
public delegate object StringArgDelegate(string arg1, string arg2);
public class DelegateTest {
// custom delegates used for various event handlers...
public static event EventHandler StaticEvent;
public static event EventHandler<EventArgs> StaticGenericEvent;
public static event ParamsDelegate StaticParamsEvent;
public static event OutDelegate StaticOutEvent;
public static event RefDelegate StaticRefEvent;
public static event BigParamsDelegate StaticBigParamsEvent;
public static event OutReturnDelegate StaticOutReturnEvent;
public static event RefReturnDelegate StaticRefReturnEvent;
public event EventHandler Event;
public event EventHandler<EventArgs> GenericEvent;
public event ParamsDelegate ParamsEvent;
public event OutDelegate OutEvent;
public event RefDelegate RefEvent;
public event BigParamsDelegate BigParamsEvent;
public event OutReturnDelegate OutReturnEvent;
public event RefReturnDelegate RefReturnEvent;
public static SimpleDelegate Simple = new SimpleDelegate(SimpleMethod);
public static void SimpleMethod() {
}
public static void InvokeUntypedDelegate(Delegate d, params object[] args) {
d.DynamicInvoke(args);
}
public static void FireStatic(object sender, EventArgs e) {
StaticEvent(sender, e);
}
public static void FireGenericStatic(object sender, EventArgs e) {
StaticGenericEvent(sender, e);
}
public static void FireParamsStatic(object sender, params object[] args) {
StaticParamsEvent(sender, args);
}
public static void FireOutStatic(object sender, out object res) {
StaticOutEvent(sender, out res);
}
public static void FireBigParamsStatic(object sender, object a, object b, object c, object d, params object[] args) {
StaticBigParamsEvent(sender, a, b, c, d, args);
}
public static void FireRefStatic(object sender, ref object res) {
StaticRefEvent(sender, ref res);
}
public static string FireOutReturnStatic(object sender, out object res) {
return StaticOutReturnEvent(sender, out res);
}
public static int FireRefReturnStatic(object sender, ref object res) {
return StaticRefReturnEvent(sender, ref res);
}
public void FireInstance(object sender, EventArgs e) {
Event(sender, e);
}
public void FireGeneric(object sender, EventArgs e) {
GenericEvent(sender, e);
}
public void FireParams(object sender, params object[] args) {
ParamsEvent(sender, args);
}
public void FireOut(object sender, out object res) {
OutEvent(sender, out res);
}
public void FireRef(object sender, ref object res) {
RefEvent(sender, ref res);
}
public void FireBigParams(object sender, object a, object b, object c, object d, params object[] args) {
BigParamsEvent(sender, a, b, c, d, args);
}
public string FireOutReturn(object sender, out object res) {
return OutReturnEvent(sender, out res);
}
public int FireRefReturn(object sender, ref object res) {
return RefReturnEvent(sender, ref res);
}
}
}