I want to set args.ReturnValue
to instance of an object created from TResponse<T>
method called Create
.
[Serializable]
public sealed class LogError : OnMethodBoundaryAspect
{
public override void OnException(MethodExecutionArgs args)
{
// Logging part..
MethodInfo methodInfo = (MethodInfo)args.Method;
// I want to replace line below comment to get TResponse<T> object instead of dynamic if possible
dynamic returnValue = Activator.CreateInstance(methodInfo.ReturnType);
args.ReturnValue = returnValue.Create(CodeMessage.InternalError, MessageType.Error, args.Exception);
args.FlowBehavior = FlowBehavior.Return;
}
}
Method ReturnType
will always be TResponse<T>
, but I don't know how to create instance of TResponse<T>
based on method return type. TResponse<T>
implements method with this signature:
.Create(CodeMessage.InternalError, MessageType.Error, args.Exception);
Create
method is static method that returns TResponse<T>
object with parameters set.
Since I didn't know how to do what I want I used Activator
to create instance of method return type but it throws RuntimeBinderException
when I call Create
method.
Aucun commentaire:
Enregistrer un commentaire