代码之家  ›  专栏  ›  技术社区  ›  BuddyJoe

.NET/C#-Reflection-System.IO.File是否使用过

  •  3
  • BuddyJoe  · 技术社区  · 16 年前

    使现代化 :

    6 回复  |  直到 16 年前
        1
  •  6
  •   Jb Evain    16 年前

    正如汤米·卡里尔所说,这很容易处理 Cecil

    using Mono.Cecil;
    
    // ..
    
    var assembly = AssemblyFactory.GetAssembly ("Foo.Bar.dll");
    var module = assembly.MainModule;
    
    bool references_file = module.TypeReferences.Contains ("System.IO.File");
    
        2
  •  3
  •   Rob Levine    16 年前

    奇妙的独立工具将为您提供这种依赖信息。

    SELECT TYPES WHERE IsDirectlyUsing "System.IO.File"
    

    你应该得到一个使用这个的所有类型的列表。

        3
  •  1
  •   Tommy Carlier    16 年前

    我建议你看看 Mono Cecil

        4
  •  1
  •   Tinister    16 年前

    我不记得在哪里,但我找到了这段方便的代码:

    http://gist.github.com/raw/104001/5ed01ea8a3bf7c8ad669d836de48209048d02b96/MethodBaseRocks.cs

    它将扩展方法添加到 MethodInfo / ConstructorInfo ILByteArray 进入 Instruction

    这样,你就可以在每个 方法信息 / 在部件中,然后在每个 指示 在那上面 方法信息 构造器信息 指示 对象包含 Operand MemberInfo 哪个有一个 DeclaringType 这等于任何一类。

        5
  •  0
  •   Adam Fyles    16 年前

    Assembly.GetExecutingAssembly().GetReferencedAssemblies() . 我不相信您可以通过反射来理解名称空间的用法。尝试查看System.CodeDom。这可能会帮助您解析代码。

        6
  •  0
  •   John Saunders    16 年前

    .NET Reflector 你能做到这一点,或者做一些接近它的事情。前几天,我检查了一个特定的类型是在哪里使用的。