擁有使用該預期函數求如何通過泛型函數返回JsonResult <T>?
public class HomeController: BaseController
{
public JsonResult HomeController()
{
var model = ExecuteHandledJTableJsonOperation(() =>
{
//do some stuff
}, LocalResources.CommonErrorMessage);
return Json(model);
}
}
以及期待Func鍵
public class BaseController : Controller
{
public T ExecuteHandledJTableJsonOperation<T>(Func<T> actionToExecute, string errorMessage)
{
try
{
return actionToExecute.Invoke();
}
catch (Exception ex)
{
LogEntry entry = new LogEntry();
entry.AddErrorMessage(ex.Message);
entry.AddErrorMessage(String.Format("Inner Exception:", ex.InnerException.Message));
//entry.Message = ex.Message;
entry.Priority = 1;
entry.EventId = 432;
entry.Severity = System.Diagnostics.TraceEventType.Error;
writer.Write(entry);
return Json(new { Result = "ERROR", Message = errorMessage });
}
}
}
它,當我試圖返回JSON檢索我一個錯誤的基礎方法的基礎方法(新{的行動結果=「錯誤」,消息= errorMessage});
不能鍵入「System.Web.Mvc.JsonResult」隱式轉換爲「T」
我知道這是更好,如果我創建人希望兩個動作,一個執行的ExecuteHandledJTableJsonOperation
的重寫/回報通常情況下,當操作出現問題時執行第二個。
事情是這樣的:
return ExecuteHandledJTableJsonOperation(() =>
{
//do something
return Json(new { Result = "OK", Records = excepciones, TotalRecordCount = excepciones.Count() });
},() =>
{
return Json(new { Result = "ERROR", Message = Properties.Resources.CommonErrorMessage });
});
但我想知道如何解決第一種情況: 無法隱式轉換類型「System.Web.Mvc.JsonResult」到「T」
謝謝。