Frame/Assets/Scripts/MVVM/Core/Proxy/Proxy.cs

47 lines
1.0 KiB
C#

namespace Assets.Sources.Core.Proxy
{
public class Proxy
{
public static Proxy Instance = new Proxy();
private IInvocationHandler _invocationHandler;
private object _target;
private string _method;
private object[] _args;
private Proxy()
{
}
public Proxy SetInvocationHandler(IInvocationHandler invocationHandler)
{
_invocationHandler = invocationHandler;
return this;
}
public Proxy SetTarget(object target)
{
_target = target;
return this;
}
public Proxy SetMethod(string method)
{
_method = method;
return this;
}
public Proxy SetArgs(object[] args)
{
_args = args;
return this;
}
public object Invoke()
{
var methodInfo = _target.GetType().GetMethod(_method);
return _invocationHandler.Invoke(_target, methodInfo, _args);
}
}
}