source/Repid.Core/Aop/ServiceProxy.cs
(完整代码) 1KBusing Repid.Utility.Helper;
using System;
using System.Runtime.Remoting.Messaging;
using System.Runtime.Remoting.Proxies;
namespace Repid.Core.Aop
{
public class ServiceProxy<T> : RealProxy where T : AopTarget
{
private T _target;
public ServiceProxy(T target) : base(typeof(T))
{
this._target = target;
}
public void PreProceede(IMessage msg)
{
_target.PreProceede();
}
public void PostProceede(IMessage msg)
{
_target.PostProceede();
}
public override IMessage Invoke(IMessage msg)
{
try
{
PreProceede(msg);
IMethodCallMessage mcm = msg as IMethodCallMessage;
object[] args = mcm.Args;
object returnValue = mcm.MethodBase.Invoke(this._target, args);
return new ReturnMessage(returnValue, args, args.Length, mcm.LogicalCallContext, mcm);
}
catch (Exception ex)
{
Exception mcmEx = ex.InnerException;
LogHelper.Error(_target, mcmEx, mcmEx.Message);
return new ReturnMessage(ex, msg as IMethodCallMessage);
}
finally { PostProceede(msg); }
}
}
}
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。