有没有办法判断字符串/guid 是否在代码中的其他任何地方使用



假设我有一个文件已满,如果 guids,我想检查它们是否已经在代码中的某处使用,如下所示:

public static Guid GenericGuidName{ get { return new Guid("2b1bd512-6d75-4c63-9e2e-dfebda4f4393"); } }

有没有办法,除了 ctrl+f-ing 每个 guid 的整个解决方案?

假设所有 GUID 都使用你提供的代码模式公开,你可以找到所有这些 GUID 并将它们放入字典中,并进行一些反射。

class MysteryCode
{
    public static Guid Foo { get { return new Guid("2b1bd512-6d75-4c63-9e2e-dfebda4f4393"); } }
    public static Guid Bar { get { return new Guid("2b1bd512-6d75-4c63-9e2e-dfebda4f4394"); } }
}
public class Program
{
    public static Dictionary<Guid, PropertyInfo> FindGuids()
    {
        return System.Reflection.Assembly.GetExecutingAssembly()
            .GetTypes()
            .SelectMany
            (
                t => t.GetProperties
                (
                    BindingFlags.Static | BindingFlags.Public
                )
            )
            .Where
            (
                p => p.PropertyType == typeof(Guid)
            )
            .ToDictionary
            (
                p => (Guid)p.GetValue(null),
                p => p
            );
    }
    public static void Main()
    {
        var dictionary = Program.FindGuids();
        foreach (var g in dictionary)
        {
            Console.WriteLine("{0} {1}.{2}", g.Key, g.Value.DeclaringType.FullName, g.Value.Name);
        }
    }
}

输出:

2b1bd512-6d75-4c63-9e2e-dfebda4f4393 Example.MysteryCode.Foo
2b1bd512-6d75-4c63-9e2e-dfebda4f4394 Example.MysteryCode.Bar

DotNetFiddle的工作示例

相关内容

最新更新