Пример #1
0
        public static IModType IdentifyModType(string dllRoot)
        {
            var interfaceType = typeof(IModType);
            var types         = Assembly.GetExecutingAssembly().GetTypes()
                                .Where(p => interfaceType.IsAssignableFrom(p) &&
                                       p.FullName != "VortexHarmonyInstaller.IModType");

            UnityContainer container = new UnityContainer();

            foreach (Type type in types)
            {
                try
                {
                    container.RegisterType(typeof(IModType), type);
                    IModType modType = container.Resolve(type) as IModType;
                    if (modType.ParseModData(dllRoot))
                    {
                        return(modType);
                    }
                }
                catch (Exception exc)
                {
                    Logger.Error("Unable to parse mod data", exc);
                    continue;
                }
            }

            return(null);
        }
Пример #2
0
        public static IModType FindMod <T>(string id)
        {
            IModType[] mods     = m_liMods.Where(mod => mod.GetType() == typeof(T)).ToArray();
            IModType   modEntry = mods.FirstOrDefault(mod => mod.GetModName() == id);

            if (modEntry == null)
            {
                Logger.Info($"Unable to find mod entry: {id}");
            }

            return(modEntry);
        }
        public static IModType IdentifyModType(string dllRoot)
        {
            var interfaceType = typeof(IModType);
            var types         = AppDomain.CurrentDomain.GetAssemblies()
                                .SelectMany(s => s.GetTypes())
                                .Where(p => interfaceType.IsAssignableFrom(p) &&
                                       p.FullName != "VortexHarmonyInstaller.IModType");

            UnityContainer container = new UnityContainer();

            foreach (Type type in types)
            {
                container.RegisterType(typeof(IModType), type);
                IModType modType = container.Resolve(type) as IModType;
                if (modType.ParseModData(dllRoot))
                {
                    return(modType);
                }
            }

            return(null);
        }