0

これが私のコードです、それは非常に簡単です:

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();
    }
  }
}

ただし、typevariable は常に null ですが、,assembly.GetTypes()などのすべての型を返します。MessengersProgram

これが私のイミディエイト ウィンドウのコピーです。

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

2 に答える 2

4

Assembly.GetType()メソッドは、名前空間を含む型のフルネームを取得することになっています。EnumReflection.Messengers代わりに合格してみてください、それはうまくいくはずです。

于 2012-04-10T01:45:42.907 に答える
1

タイプを取得するには、GetType()でフルネームを指定する必要があります(つまり、名前空間を除く)。

于 2012-04-10T01:45:52.007 に答える