Namespace causes NullReferenceException?

本文关键字:NullReferenceException causes Namespace | 更新日期: 2023-09-27 17:54:46

我有以下程序,这是一段示例代码,展示了c#反射如何在类上操作。一切正常,没有任何问题。

public class Program
{
public static void Main()
{
    Type T = Type.GetType("Customer");
    Console.WriteLine("Information about the Type object: ");
    Console.WriteLine(T.Name);
    Console.WriteLine(T.FullName);
    Console.WriteLine();
    Console.WriteLine("Property info:");
    PropertyInfo[] myPropertyInfoArray = T.GetProperties();
    foreach(PropertyInfo myProperty in myPropertyInfoArray)
    {
        Console.WriteLine(myProperty.PropertyType.Name);
    }
    Console.WriteLine();
    Console.WriteLine("Methods in Customer:");
    MethodInfo[] myMethodInfoArray = T.GetMethods();
    foreach(MethodInfo myMethod in myMethodInfoArray)
    {
        Console.WriteLine(myMethod.Name);
    }

    Console.ReadKey();
}
}

class Customer
{
public int ID {get;set;}
public string Name {get;set;}
public Customer()
{
    this.ID = -1;
    this.Name = string.Empty;
}
public Customer(int ID, string Name)
{
    this.ID = ID;
    this.Name = Name;
}
public void PrintID()
{
    Console.WriteLine("ID: {0}", this.ID);
}
public void PrintName()
{
    Console.WriteLine("Name: {0}", this.Name);
}
}

我遇到的问题是,当我在一个命名空间中包装所有代码时,我突然在Type对象上得到一个NullReferenceException。为什么会这样呢?

Namespace causes NullReferenceException?

因为它不再知道Customer在哪里。你需要

Type T = Type.GetType("NameSpaceName.Customer");