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(); }
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); }