// Gets a list of all of our delegates used by the HAL public static List<HALDelegateClass> GetHalBaseDelegates() { List<HALDelegateClass> halBaseMethods = new List<HALDelegateClass>(); var dir = "..\\..\\HAL\\Delegates"; foreach (var file in Directory.GetFiles(dir, "*.cs")) { HALDelegateClass cs = new HALDelegateClass { ClassName = "", Methods = new List<DelegateDeclarationSyntax>() }; using (var stream = File.OpenRead(file)) { var tree = CSharpSyntaxTree.ParseText(SourceText.From(stream), path: file); cs.ClassName = Path.GetFileName(file); var methods = tree.GetRoot() .DescendantNodes() .OfType<DelegateDeclarationSyntax>() .Select(a => a).ToList(); cs.Methods.AddRange(methods); } halBaseMethods.Add(cs); } return halBaseMethods; }
// Gets a list of all of our delegates used by the HAL public static List <HALDelegateClass> GetHalBaseDelegates() { List <HALDelegateClass> halBaseMethods = new List <HALDelegateClass>(); var assembly = Assembly.GetExecutingAssembly(); var ps = Path.DirectorySeparatorChar; var path = assembly.CodeBase.Replace("file:///", "").Replace("/", ps.ToString()); path = Path.GetDirectoryName(path); var dir = path + "\\..\\..\\HAL\\Delegates"; foreach (var file in Directory.GetFiles(dir, "*.cs")) { HALDelegateClass cs = new HALDelegateClass { ClassName = "", Methods = new List <DelegateDeclarationSyntax>() }; using (var stream = File.OpenRead(file)) { var tree = CSharpSyntaxTree.ParseText(SourceText.From(stream), path: file); cs.ClassName = Path.GetFileName(file); var methods = tree.GetRoot() .DescendantNodes() .OfType <DelegateDeclarationSyntax>() .Select(a => a).ToList(); cs.Methods.AddRange(methods); } halBaseMethods.Add(cs); } return(halBaseMethods); }