ExcutorBase.cs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. using LJLib.Net.SPI.Com;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Threading.Tasks;
  6. namespace LJProxy.LJLib.Net.SPI.Server
  7. {
  8. public abstract class ExcutorBase
  9. {
  10. public abstract LJResponse Excute(ILJRequest request,object state);
  11. }
  12. public abstract class ExcutorBase<T1,T2>:ExcutorBase where T1: LJRequest<T2> where T2:LJResponse,new()
  13. {
  14. protected abstract void ExcuteInternal(T1 request, object state, T2 rslt);
  15. public override LJResponse Excute(ILJRequest request, object state)
  16. {
  17. T2 rslt = new T2();
  18. try
  19. {
  20. T1 req = request as T1;
  21. if(req == null)
  22. {
  23. rslt.ErrMsg = string.Format("request 不能转换成类型[{0}]",typeof(T1).Name);
  24. return rslt;
  25. }
  26. ExcuteInternal(req, state, rslt);
  27. }catch(Exception e)
  28. {
  29. rslt.ErrMsg = e.Message.ToString();
  30. }
  31. return rslt;
  32. }
  33. }
  34. }