示例#1
0
        // 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;
        }
示例#2
0
        // 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);
        }