首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >知道DLL中存在哪些类和方法的不同方法是什么?

知道DLL中存在哪些类和方法的不同方法是什么?
EN

Stack Overflow用户
提问于 2015-06-02 21:59:18
回答 3查看 75关注 0票数 0

我在面试时,面试官问了我以下问题。

How to know what classes and methods are present in DLL ?

我很困惑,说:“我们可以使用工具或者重构它。”

有人能解释一下different ways以找到DLL (from code as well as from tools)中的所有内容吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-06-02 22:01:34

我怀疑面试官指的是反思。例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var assembly = ...; // e.g. typeof(SomeType).Assembly
var types = assembly.GetTypes();
var methods = types.SelectMany(type => type.GetMethods());
// etc

例如,您需要使用Type.IsClass筛选类型,以便只获取类。当使用反射查询类型或程序集的特定部分时,LINQ非常有用。注意,上面的无参数GetMethods()调用只返回公共方法;您也可以指定一个BindingFlags值来检索非公共方法。

票数 4
EN

Stack Overflow用户

发布于 2015-06-02 22:10:34

按完整路径获取程序集到文件的类型:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public IEnumerable<Type> GetAllTypesInDll(string filename)
{
    // load assembly from file
    Assembly asm = Assembly.LoadFile(filename);

    // enumerate all types
    return asm.GetTypes();
}

用法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
foreach (Type type in from e in GetAllTypesInDll(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Console.exe"))
                      orderby e.FullName
                      select e)
{
    // print type
    Console.WriteLine("----------------");
    Console.WriteLine(type.FullName);

    // print type methods
    Console.WriteLine("Methods:");
    foreach (var mi in from e in type.GetMethods()
                       orderby e.Name
                       select e)
    {
        Console.WriteLine("    " + mi.Name);
    }
    Console.WriteLine("----------------");
}

结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
----------------
<>f__AnonymousType0`7
Methods:
    Equals
    get_DisplayName
    get_EMail
    get_Groups
    get_Login
    get_Name
    get_Patronymic
    get_Surname
    GetHashCode
    GetType
    ToString
----------------
----------------
ARMUpdateService.ARMGetAllVersionsRequest
Methods:
    Equals
    GetHashCode
    GetType
    ToString
----------------
----------------
ARMUpdateService.ARMGetAllVersionsResponse
Methods:
    Equals
    GetHashCode
    GetType
    ToString
----------------
----------------
ARMUpdateService.ARMGetCurrentVersionRequest
Methods:
    Equals
    GetHashCode
    GetType
    ToString
----------------
----------------
ARMUpdateService.ARMGetCurrentVersionResponse
Methods:
    Equals
    GetHashCode
    GetType
    ToString
----------------
----------------
ARMUpdateService.ARMGetDataRequest
Methods:
    Equals
    GetHashCode
    GetType
    ToString
----------------
----------------
ARMUpdateService.ARMGetDataResponse
Methods:
    Equals
    GetHashCode
    GetType
    ToString
----------------
etc...
票数 1
EN

Stack Overflow用户

发布于 2015-06-03 01:25:25

此外,您还可以使用Reflector、dotPeek或ILDASM等工具查看程序集的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30611941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文