nunit中的dyanamicrank,觉得非常的强大。开始觉得没有metadata program的c#怎么做到的。。查看了源代码才知道是使用了realproxy这个类。。这个类非常强大啊。。。。。看代码
- class Program
- {
- interface ABC
- {
- void Hello();
- }
- class Mock : System.Runtime.Remoting.Proxies.RealProxy
- {
- public Mock()
- : base(typeof(ABC))
- { }
- public override System.Runtime.Remoting.Messaging.IMessage Invoke(System.Runtime.Remoting.Messaging.IMessage msg)
- {
- //throw new Exception("The method or operation is not implemented.");
- System.Runtime.Remoting.Messaging.IMethodCallMessage call = (System.Runtime.Remoting.Messaging.IMethodCallMessage)msg;
- Console.WriteLine("Hello");
- return new System.Runtime.Remoting.Messaging.ReturnMessage(null,null,0,null, call);
- }
- }
- static void Main(string[] args)
- {
- Mock mock = new Mock();
- ABC abc = mock.GetTransparentProxy() as ABC;
- abc.Hello();
- }
- }