RecipeParamBase.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using SKMC.Api.Common;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Reflection;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace SKMC.Api.Recipe.Config
  9. {
  10. /// <summary>
  11. /// <para>配方参数基类</para>
  12. /// <para>继承该类可实现即时更新</para>
  13. /// </summary>
  14. public abstract class RecipeParamBase
  15. {
  16. protected readonly RecipeCacher recipeCacher = ObjectFactory.Resolve<RecipeCacher>();
  17. public void InitLoad()
  18. {
  19. foreach (RecipeParam param in recipeCacher.RecipeProfile.RecipePublicSwitchParams)
  20. {
  21. SetParameter(param);
  22. }
  23. foreach (RecipeParam param in recipeCacher.RecipeProfile.RecipePublicValueParams)
  24. {
  25. SetParameter(param);
  26. }
  27. foreach (RecipeParam param in recipeCacher.RecipeProfile.RecipePrivateSwitchParams)
  28. {
  29. SetParameter(param);
  30. }
  31. foreach (RecipeParam param in recipeCacher.RecipeProfile.RecipePrivateValueParams)
  32. {
  33. SetParameter(param);
  34. }
  35. }
  36. /// <summary>
  37. /// 设置单个参数到常量中
  38. /// </summary>
  39. /// <param name="recipeParam"></param>
  40. public void SetParameter(RecipeParam recipeParam)
  41. {
  42. FieldInfo field = GetType().GetField(recipeParam.Code, BindingFlags.Public | BindingFlags.Static);
  43. if (field != null)
  44. {
  45. field.SetValue(null, Convert.ChangeType(recipeParam.Value, field.FieldType));
  46. recipeParam.LastValue = recipeParam.Value;
  47. }
  48. }
  49. }
  50. }