【问题标题】:How I do add this function to console app我如何将此功能添加到控制台应用程序
【发布时间】:2010-01-27 15:14:10
【问题描述】:

我已经加载了一个名为“Mscorlib.dll”的程序集,我希望它列出“Mscorlib”中的所有类,它会这样做(使用反射)。现在我想添加一个函数,用户可以通过该函数从程序集中输入一个类,然后它会从该类中获取所有方法。

我该怎么做呢?任何帮助都会很好

【问题讨论】:

  • 为什么要加载 MSCORLIB.DLL,它是所有 .NET 可执行文件的运行时库,默认情况下被引用,但在 Visual Studio 的引用中未显示...
  • 您可以使用 Net Reflector(Redgate 的一部分)来查看如何结合 Jon 的回答来获得预期的结果..
  • 您好,这没什么大不了的。我只是在练习编码以及如何使用反射获取信息。无论如何感谢您的建议。

标签: c# .net reflection assemblies console


【解决方案1】:

使用Assembly.GetType(type) 获取适当的Type,然后使用Type.GetMethods 获取其中的方法。 (请注意,采用BindingFlags 的重载只会返回公共方法。)

例如(无错误检查):

Assembly mscorlib = typeof(int).Assembly;
Console.Write("Type name? ");
string typeName = Console.ReadLine();
Type type = mscorlib.GetType(typeName);
foreach (MethodInfo method in type.GetMethods())
{
    Console.WriteLine(method);
}

【讨论】:

  • 是的,我已经完成了这个 Jon 但现在我希望用户在 mscorlib 中搜索一个类,这将显示所选类的方法。我不想要 mscorlib 的完整方法列表,因为似乎信息太多。
  • 嗯,这正是我向您展示的内容 - 请注意对 Assembly.GetType(string) 的调用,而不是 Assembly.GetTypes()。只需对单个类型而不是程序集中的每个类型调用 GetMethods。
猜你喜欢
  • 2015-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-17
相关资源
最近更新 更多