Assembly.ExecutingAssembly()GetType()不返回任何内容

时间:2012-04-10 01:43:50

标签: c# .net assemblies

这是我的代码,非常简单:

namespace EnumReflection
{
    enum Messengers
    {
      MSN,
      ICQ,
      YahooChat,
      GoogleTalk
    }

  class Program
  {
    static void Main(string[] args)
    {
      FieldInfo[] fields = typeof(Messengers).GetFields(BindingFlags.Static | BindingFlags.Public);

      foreach (var field in fields)
      {
        Console.WriteLine(field.Name);
      }

      var assembly = Assembly.GetExecutingAssembly();
      var type = assembly.GetType("Messengers");

      Console.ReadLine();
    }
  }
}

但是,type变量始终为空,即使我说assembly.GetTypes()时,它也会返回所有类型,例如MessengersProgram

以下是我的立即窗口的副本:

assembly.GetType("Messengers");
null
assembly.GetTypes();
{System.Type[2]}
    [0]: {Name = "Messengers" FullName = "EnumReflection.Messengers"}
    [1]: {Name = "Program" FullName = "EnumReflection.Program"}

2 个答案:

答案 0 :(得分:4)

Assembly.GetType()方法应该采用类型的全名,包括名称空间。尝试传递EnumReflection.Messengers,这应该有用。

答案 1 :(得分:1)

您应该在GetType()中指定一个全名(即取消名称空间)以获取类型