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