Exemple #1
0
            static ChallengeBase LoadChallenge(FileEntry entry, CollectibleAssemblyLoadContext context)
            {
                using var fs = entry.Open(FileMode.Open, FileAccess.Read);
                var assembly = context.LoadFromStream(fs);

                return(assembly
                       .GetTypes()
                       .Where(t => !t.IsAbstract && typeof(ChallengeBase).IsAssignableFrom(t))
                       .Select(t => (ChallengeBase)Activator.CreateInstance(t) !)
                       .First());
            }
Exemple #2
0
        private static Dictionary <int, ChallengeBase> LoadChallenges()
        {
            var   context  = new CollectibleAssemblyLoadContext();
            var   fs       = new PhysicalFileSystem();
            UPath basePath = fs.ConvertPathFromInternal(AppDomain.CurrentDomain.BaseDirectory);

            var challenges = fs.EnumerateFileEntries(basePath, "Day*.dll")
                             .Select(entry => LoadChallenge(entry, context))
                             .ToDictionary(k => k.Day, v => v);

            return(challenges);