123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
-
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using Newtonsoft.Json.Linq;
- using SAGA.DotNetUtils.Extend;
- namespace SAGA.Models
- {
- /// <summary>
- /// mbiItem构造工厂
- /// </summary>
- public static class MBIItemFactory
- {
- private static Dictionary<string, IMBIItemBuilder> m_Builders = new Dictionary<string, IMBIItemBuilder>();
- static MBIItemFactory()
- {
- InitBuilders();
- }
- public static void InitBuilders()
- {
- //可以动态加载,暂时先硬编码
- m_Builders["SI"] = new RoomItemBuilder();
- m_Builders["EQ"] = new EquipmentItemBuilder();
- m_Builders["EC"] = new EquipmentItemBuilder();
- m_Builders["FL"] = new FloorItemBuilder();
- }
- /// <summary>
- /// 创建Mbi项目
- /// </summary>
- /// <param name="jObject"></param>
- /// <returns></returns>
- public static MBIItem Create(JObject jObject)
- {
- MBIItem item = null;
- var id = jObject.GetValueEx("id");
- if (string.IsNullOrEmpty(id) || id.Length < 2)
- {
- return item;
- }
- string flag = id.Substring(0, 2).ToUpper();
- if (!m_Builders.TryGetValue(flag, out IMBIItemBuilder builder))
- {
- builder = new MBIItemBuilder<MBIItem>();
- }
- item = builder.CreateMBIItem(jObject);
- return item;
- }
- /// <summary>
- /// 创建制定类型实例
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="jobject"></param>
- /// <returns></returns>
- public static T Create<T>(JObject jobject) where T : MBIItem
- {
- return Create(jobject) as T;
- }
- }
- }
|