【问题标题】:Will this code work on your version of Visual Studio? C#此代码是否适用于您的 Visual Studio 版本? C#
【发布时间】:2011-01-09 23:19:18
【问题描述】:

我想使用此代码从程序集“Mscorlib.dll”中获取所有方法,但我收到此错误

“无法将“System.Reflection.RuntimeConstructorInfo”类型的对象转换为“System.Reflection.MethodInfo”类型。”

基本上我想做的就是获取该程序集的接口或成员列表。

代码如下:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Reflection;

namespace ConsoleApplication1 {
    class Program
    {

        static void Main(string[] args)
        {
            Assembly a = Assembly.Load("Mscorlib.dll");
            foreach (Type oType in a.GetTypes())
            {
                MemberInfo[] f = oType.GetMembers();
                foreach (MethodInfo m in f)
                    Console.WriteLine("Member: {0}",m.ToString());
            }
         }
      } 
}

你怎么看?

【问题讨论】:

  • 在学习新 API 时使用 var 关键字,然后查看文档/智能感知以获得更深入的知识,这将是一个很好的论据。

标签: c# .net reflection assemblies types


【解决方案1】:

是的,成员不能与方法互换,应该是:

MemberInfo[] f = oType.GetMembers(); 
foreach (MemberInfo m in f) 
     Console.WriteLine("Member: {0}",m.ToString());

变化是:foreach(MemberInfo m in f)

【讨论】:

    【解决方案2】:

    您的意思是使用 oType.Getmethods() 吗?因为否则,您将枚举所有成员,但期望它们都是方法

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-17
      • 2014-10-08
      • 1970-01-01
      相关资源
      最近更新 更多