using System.Reflection; using Yw; namespace PBS.BLL.WE { /// /// CAL辅助类 /// internal class CALCreateHelper { /// /// 创建CAL /// /// /// public static T CreateCAL() { var type = Settings.WEParasHelper.WE.CAL.CALType; return CreateCAL(type); } public static I CreateCAL(string SourceType = "HttpClient", bool EnableCache = true, int CacheTime = 10) { Type typeFromHandle = typeof(I); string @namespace = typeFromHandle.Namespace; string name = typeFromHandle.Name; string name2 = typeFromHandle.Assembly.GetName().Name; string key = $"Yw.CALFactory-{SourceType}-{name2}-{@namespace}-{name}"; I val = MemoryCacheHelper.Get(key); if (val != null) { return val; } string typeName = $"{@namespace}.{SourceType}.{name.Remove(0, 1)}"; val = (I)Assembly.Load(name2).CreateInstance(typeName); if (val == null) { return val; } if (EnableCache) { MemoryCacheHelper.Set(key, val, CacheTime); } return val; } } }