Пример #1
0
        private void CreateContentClick(object sender, RoutedEventArgs e)
        {
            BookSource     s = DataContext as BookSource;
            IRiddleHandler h = x_types.SelectedItem as IRiddleHandler;

            h.Create();
            s.CreatePage();
            s.SetPage(h.CreateRiddle());
            LoadScene();
        }
Пример #2
0
        private List <IRiddleHandler> InitPlugins()
        {
            Assembly assem = Assembly.GetExecutingAssembly();
            Uri      ur    = new Uri(assem.CodeBase);
            FileInfo fi    = new FileInfo(ur.AbsolutePath);
            string   s     = fi.Directory.FullName;

            //find all dlls
            string[] dlls = Directory.GetFiles(s, "*.dll");
            ICollection <Assembly> assemblies = new List <Assembly>(dlls.Length);
            List <IRiddleHandler>  riddles    = new List <IRiddleHandler>();

            foreach (string dllFile in dlls)
            {
                AssemblyName an       = AssemblyName.GetAssemblyName(dllFile);
                Assembly     assembly = Assembly.Load(an);
                assemblies.Add(assembly);
            }

            Type rh = typeof(IRiddleHandler);

            foreach (Assembly a in assemblies)
            {
                Type[] types = a.GetTypes();
                foreach (Type t in types)
                {
                    if (t.IsAbstract || t.IsNotPublic || !rh.IsAssignableFrom(t))
                    {
                        continue;
                    }
                    // create as instance
                    object         iRiddle = a.CreateInstance(t.ToString());
                    IRiddleHandler riddle  = iRiddle as IRiddleHandler;
                    riddle.Outcomes = Locations;
                    if (riddle != null)
                    {
                        riddles.Add(riddle);
                        riddle.Create();
                    }
                }
            }
            return(riddles);
        }