这是我的代码,非常简单:
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()
时,它也会返回所有类型,例如Messengers
,Program
。
以下是我的立即窗口的副本:
assembly.GetType("Messengers");
null
assembly.GetTypes();
{System.Type[2]}
[0]: {Name = "Messengers" FullName = "EnumReflection.Messengers"}
[1]: {Name = "Program" FullName = "EnumReflection.Program"}
答案 0 :(得分:4)
Assembly.GetType()方法应该采用类型的全名,包括名称空间。尝试传递EnumReflection.Messengers
,这应该有用。
答案 1 :(得分:1)
您应该在GetType()中指定一个全名(即取消名称空间)以获取类型