Is there a way to get all namespaces you're 'using' within a class through C# code?

前端 未结 3 1849
北荒
北荒 2021-02-05 17:41

Is there any way to get a List which contains all \'usings\' within a namespace/class?

For instance

using System;
using System         


        
3条回答
  •  太阳男子
    2021-02-05 18:16

    Here's a rough untested attempt to get you started:

    IEnumerable GetNamespacesUsed(string fileName)
    {
        var lines = System.IO.File.ReadAllLines(fileName);
        var usingLines = lines.Where(
            x => x.StartsWith("using ") && !x.StartsWith("using ("));
    
        foreach (var line in usingLines)
        {
            if (line.Contains("="))
                yield return line.Substring(line.IndexOf("="), line.Length - 1);
            else
                yield return line.Substring(line.Length - 1);
        }
    }
    

    The line.Length - 1 may not be correct to cut off the semicolon on the end. You'll need to test it to find out what it should be. Also, this assumes your code is formatted in a fairly standard way. If it's not, it won't work.

提交回复
热议问题