C# 方法反射中的NullReferenceException

C# 方法反射中的NullReferenceException,c#,nullreferenceexception,C#,Nullreferenceexception,我正在尝试创建一个方法,该方法将显示特定类型具有的所有方法。 代码是: public static void AllMethods(Type t) { var query = from x in t.GetMethods() select x; foreach (var item in query) Console.WriteLine(item.Name); } 我尝试了另一个版本: public static void

我正在尝试创建一个方法,该方法将显示特定类型具有的所有方法。
代码是:

public static void AllMethods(Type t)
    {
        var query = from x in t.GetMethods() select x;
        foreach (var item in query)
            Console.WriteLine(item.Name);
    }
我尝试了另一个版本:

public static void AllMethods(Type t)
    {
        MethodInfo[] m = t.GetMethods();
        foreach (MethodInfo item in m)
            Console.WriteLine(item.Name);
    }
两个版本都会编译,但在传递参数时,会发生NullReferenceException:

static void Main(string[] args)
    {   
        AllMethods(Type.GetType("Z")); // Z is a class name

        Console.ReadLine();
    }
我想解决办法很简单,但我的大脑现在想不出来了)

有什么建议吗?

我的猜测是,
Z
不是完全限定的类名(您需要包含名称空间),或者它是既不在mscorlib中也不在调用程序集中的类的名称。要使用来自另一个程序集的类,还需要包括程序集名称(如果强名称,则包括版本号等)。或者使用
Assembly.GetType()
,如果您已经有了对程序集的引用,例如因为您知道同一程序集中存在另一个类型,则使用更简单的方法

假设我是对的,您应该完全忽略
AllMethods
方法。相反,请检查以下内容:

Type type = Type.GetType(...);
Console.WriteLine("type is null? {0}", type == null);

当然,如果您在编译时知道类型,最好使用
typeof

当使用typeof(Z)时,它是有效的,但我正在学习反射,所以我需要使用type.GetType()可能的重复(确切地说)我必须显式地指定名称空间)@AlekseiChepovoi:这就是简短但完整的示例派上用场的地方-我不必猜测:)