12345678910111213141516171819202122232425262728293031323334 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using WCS.Core;
- using WCS.Entity;
- namespace WCS.Service.Handlers
- {
- /// <summary>
- /// 设备工作器
- /// </summary>
- /// <typeparam name="T"></typeparam>
- public abstract class DeviceWork<T> : Work<T> where T : EntityEx<WCS_DEVICE>
- {
- private readonly string[] _typenames;
- protected DeviceWork()
- {
- _typenames = typeof(T).GenericTypeArguments.Select(v => v.AssemblyQualifiedName).ToArray();
- }
- protected abstract override void Do(T obj);
- protected override sealed IEnumerable<T> InitObjects()
- {
- var arr = Device.Where(v => v.ENABLED && v.DEVICEPROTOCOLS.All(d => d.ENABLED && d.DB.ENABLED && d.DB.PLC.ENABLED))
- .Where(v => _typenames.All(d => v.DEVICEPROTOCOLS.Any(e => e.DB.PROTOCOL == d)))
- .Where(SelectDevice).ToArray();
- var res = arr.Select(v => Activator.CreateInstance(typeof(T), v) as T);
- return res;
- }
- }
- }
|