public override void Validate(MyValidator validator) { base.Validate(validator); if (ParentNetwork == null) { validator.AddError(this, "LSTM layer needs to be in a neural network group"); } }
public override void Validate(MyValidator validator) { ScriptCheckMethod = null; ScriptShouldStopMethod = null; CSharpCodeProvider codeProvider = new CSharpCodeProvider(); CompilerParameters parameters = new CompilerParameters() { GenerateInMemory = false, GenerateExecutable = false, }; parameters.ReferencedAssemblies.Add("GoodAI.Platform.Core.dll"); parameters.ReferencedAssemblies.Add("System.Core.dll"); //for LINQ support parameters.ReferencedAssemblies.Add("System.Runtime.dll"); //for LINQ support // TODO: load the xunit dll in Brain Simulator UI from the module directory. parameters.ReferencedAssemblies.Add("xunit.assert.dll"); parameters.ReferencedAssemblies.Add(Assembly.GetExecutingAssembly().Location); //Assembly[] loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies(); //IEnumerable<Assembly> openTKAssemblies = loadedAssemblies.Where(x => x.ManifestModule.Name == "xunit.assert.dll"); //if (openTKAssemblies.Count() > 0) // parameters.ReferencedAssemblies.Add(openTKAssemblies.First().Location); CompilerResults results = codeProvider.CompileAssemblyFromSource(parameters, Script); if (results.Errors.HasErrors) { string message = ""; foreach (CompilerError error in results.Errors) { message += "Line " + error.Line + ": " + error.ErrorText + "\n"; } validator.AddError(this, "Errors in compiled script:\n" + message); return; } else if (results.CompiledAssembly == null) { validator.AddError(this, "Compiled assembly is null."); return; } try { Type enclosingType = results.CompiledAssembly.GetType("Runtime.Script"); ScriptCheckMethod = enclosingType.GetMethod("Check"); validator.AssertError(ScriptCheckMethod != null, this, "Check() method not found in compiled script"); ScriptShouldStopMethod = enclosingType.GetMethod("ShouldStop"); // optional, don't check for null } catch (Exception e) { validator.AddError(this, "Script analysis failed: " + e.GetType().Name + ": " + e.Message); } }