using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; namespace IStation { /// /// /// public class EtaCalculationFactory { private const string DllName_Custom = "IStation.EtaCalculation4Custom"; private const string NameSpace_Custom = "IStation.EtaCalculation"; //获取DLL名称 private static string DllName { get { var dllName = string.Empty; var selector = Settings.Eta.Analy.Method; if (selector == 1) { dllName = DllName_Custom; } return dllName; } } private static string NameSpace { get { var ns = string.Empty; var selector = Settings.Eta.Analy.Method; if (selector == 1) { ns = NameSpace_Custom; } return ns; } } /// /// 创建 /// public static I CreateT() { var dllName = DllName; if (string.IsNullOrEmpty(dllName)) { LogHelper.Error($"EtaCalculationFactory工厂创建接口对象失败,请检查相关配置参数!"); return default; } var ns = NameSpace; if (string.IsNullOrEmpty(ns)) { LogHelper.Error($"EtaCalculationFactory工厂创建接口对象失败,请检查相关配置参数!"); return default; } var type = typeof(I); var className = string.Format("{0}.{1}", ns, type.Name.Remove(0, 1)); var obj = Assembly.Load(dllName).CreateInstance(className); return (I)obj; } /// /// 创建 /// public static IStation.IEtaCalculation.IAnalyCalculator Create(long CorpID) { if (CorpID == 4) return new IStation.EtaCalculation.AnalyCalculator4SHYS(); else if (CorpID == 5) return new IStation.EtaCalculation.AnalyCalculatorSMI(); else return null; } } }