1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 |
using
System; using
System.Collections.Generic; using
System.Text; using
System.Runtime.Remoting.Proxies; namespace
Aop { public
class AopAttribute : ProxyAttribute { public
override MarshalByRefObject CreateInstance(Type serverType) { AopProxy realProxy = new
AopProxy(serverType); return
realProxy.GetTransparentProxy() as
MarshalByRefObject; } } } |
AopProxy.cs
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 |
using
System; using
System.Collections.Generic; using
System.Text; using
System.Reflection.Emit; using
System.Runtime.Remoting.Proxies; using
System.Runtime.Remoting.Messaging; using
System.Runtime.Remoting.Activation; using
System.Windows.Forms; namespace
Aop { public
class AopProxy : RealProxy { public
AopProxy(Type serverType) : base (serverType) { } public
override IMessage Invoke(IMessage msg) { if
(msg is
IConstructionCallMessage) { IConstructionCallMessage constructCallMsg = msg as
IConstructionCallMessage; IConstructionReturnMessage constructionReturnMessage = this .InitializeServerObject((IConstructionCallMessage)msg); RealProxy.SetStubData( this , constructionReturnMessage.ReturnValue); Console.WriteLine( "Call constructor" ); return
constructionReturnMessage; } else { IMethodCallMessage callMsg = msg as
IMethodCallMessage; IMessage message; try { object [] args = callMsg.Args; object
o = callMsg.MethodBase.Invoke(GetUnwrappedServer(), args); message = new
ReturnMessage(o, args, args.Length, callMsg.LogicalCallContext, callMsg); } catch
(Exception e) { message = new
ReturnMessage(e, callMsg); } Console.WriteLine(message.Properties[ "__Return" ].ToString()); return
message; } } } } |
AopAttribute.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 |
using
System; using
System.Collections.Generic; using
System.Text; namespace
Aop { [AopAttribute] public
class AopClass : ContextBoundObject { public
string Hello() { return
"welcome" ; } } } |
AopClass.cs
原文:http://www.cnblogs.com/Byrd/p/3593330.html