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
130 lines (107 loc) · 5.07 KB
/
DelegateTest.cs
File metadata and controls
130 lines (107 loc) · 5.07 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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/* ****************************************************************************
*
* Copyright (c) Microsoft Corporation.
*
* This source code is subject to terms and conditions of the Apache License, Version 2.0. A
* copy of the license can be found in the License.html file at the root of this distribution. If
* you cannot locate the Apache License, Version 2.0, please send an email to
* ironpy@microsoft.com. By using this source code in any fashion, you are agreeing to be bound
* by the terms of the Apache License, Version 2.0.
*
* You must not remove this notice, or any other, from this software.
*
*
* ***************************************************************************/
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) {
#if SILVERLIGHT
IronPython.Runtime.Operations.PythonCalls.Call(d, args);
#else
d.DynamicInvoke(args);
#endif
}
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);
}
}
}