using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using ServerCore; using ServerBase; namespace ServerBase; public partial class Initializers { private string m_contents_name = string.Empty; private readonly List m_initializers = new(); public async Task init(string contentsName) { var result = new Result(); m_contents_name = contentsName; foreach (var each in m_initializers) { result = await each.onInit(); if (result.isFail()) { Log.getLogger().error($"Failed to init of Initializers - {each.getTypeName()}, ContentsName:{contentsName}"); return result; } } Log.getLogger().debug($"Success Initializers.init() - {m_contents_name}"); return result; } public bool appendInitializer(IInitializer initializer) { if (initializer == null) { return false; } if (null != m_initializers.Find(x => x.Equals(initializer))) { Log.getLogger().fatal($"Failed to append Initializer, cause Duplicated Initializer !!! - {initializer.getTypeName()}"); return false; } m_initializers.Add(initializer); return true; } public bool tryConvert(out List? founds) where T : class { founds = null; foreach (var each in m_initializers) { var converted = each as T; if (converted != null) { founds = founds ?? new List(); founds.Add(converted); } } return founds != null && 0 < founds.Count; } public List? tryConvert() where T : class { if (tryConvert(out var founds)) { return founds; } else { return new List(); } } }