//parameterParsers are classes that extends from IExternalConstructor public ClassHierarchyImpl(string[] assemblies, Type[] parameterParsers) { this.assemblies = assemblies; rootNode = NodeFactory.CreateRootPackageNode(); loader = new AssemblyLoader(assemblies); foreach (Type p in parameterParsers) //p must be extend from IExternalConstructor { try { Parameterparser.AddParser(p); } catch (BindException e) { Org.Apache.REEF.Utilities.Diagnostics.Exceptions.Caught(e, Level.Error, LOGGER); Org.Apache.REEF.Utilities.Diagnostics.Exceptions.Throw(new ArgumentException("Could not register parameter parsers", e), LOGGER); } } foreach (var a in loader.Assemblies) { foreach (var t in a.GetTypes()) { RegisterType(t); } } }
// parameterParsers are classes that extends from IExternalConstructor public ClassHierarchyImpl(string[] assemblies, Type[] parameterParsers) { this.assemblies = assemblies; rootNode = NodeFactory.CreateRootPackageNode(); loader = new AssemblyLoader(assemblies); foreach (Type p in parameterParsers) { // p must be extend from IExternalConstructor try { Parameterparser.AddParser(p); } catch (BindException e) { Org.Apache.REEF.Utilities.Diagnostics.Exceptions.Caught(e, Level.Error, LOGGER); Org.Apache.REEF.Utilities.Diagnostics.Exceptions.Throw(new ArgumentException("Could not register parameter parsers", e), LOGGER); } } foreach (var a in loader.Assemblies) { Type[] types; try { types = a.GetTypes(); } catch (ReflectionTypeLoadException exception) { LOGGER.Log(Level.Warning, "GetTypes failed for assembly: {0} LoaderExceptions: {1}", a, string.Join <Exception>("; ", exception.LoaderExceptions)); continue; } foreach (var t in types) { try { RegisterType(t); } catch (FileNotFoundException exception) { LOGGER.Log(Level.Warning, "Could not register type: {0} Exception: {1}", t, exception); } } } }