一个C#窗体小程序出现NullReferenceException

ALANREDD 2014-03-08 03:37:52
刚刚接触反射技术,但并不理解,对着资料打的程序
namespace 反射
{
class Program
{


class User
{
private int _id; //模拟一个数据库中User的实体
public int ID
{
get { return _id; }
set { _id = value; }
}

private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
}


interface IUser
{
void Insert(User user); //一个从数据库中获取User的接口
User GetUser(int id);

}

class SqlserverUser : IUser //继承IUser的sql类
{
public void Insert(User user)
{
Console.WriteLine("在sql中插入数据"); //模拟的方法
}

public User GetUser(int id)
{

Console.WriteLine("在sql中得到一条记录");
return null;
}
}

class AccessUser : IUser
{
public void Insert(User user)
{
Console.WriteLine("在Access中插入数据");
}

public User GetUser(int id)
{
Console.WriteLine("在Access中得到一条记录,{0}",id);
return null;
}
}

class Department
{
private int _id;
public int ID //数据库中的department实体
{
get { return _id; }
set { _id = value; }
}

private string _location;
public string Location
{
get { return _location; }
set { _location = value; }
}
}

interface IDepartment
{
void Insert(Department department); //获取Department的接口

Department GetDepartment(int id);
}

class SqlserverDepartment : IDepartment
{
public void Insert(Department department) //和上面的差不多
{
Console.WriteLine("在sql中插入数据");
}

public Department GetDepartment(int id)
{
Console.WriteLine("在sql中得到一条记录");
return null;
}
}

class AccessDepartment : IDepartment
{
public void Insert(Department department)
{
Console.WriteLine("在Access中插入数据");
}

public Department GetDepartment(int id)
{
Console.WriteLine("在Access中得到一条记录");
return null;
}
}




class DataAccess //这个类完全是照抄资料上的,并不是很理解
{
private static readonly string AssemblyName = "反射";
private static readonly string db = "Sqlserver";

public static IUser CreateUser()
{
string className = AssemblyName + "." + db + "User";
return (IUser)Assembly.Load(AssemblyName).CreateInstance(className);
}

public static IDepartment CreateDepartment()
{
string className = AssemblyName + "." + db + "Department";
return (IDepartment)Assembly.Load(AssemblyName).CreateInstance(className);
}

}
static void Main(string[] args)
{
User user = new User();

IUser iu = DataAccess.CreateUser();

iu.Insert(user);

}
}
}

执行时会抛出NullReferenceException:未将对象引用设置到对象的实例 上面显示的是最后一行代码有问题
​请教各位大神是哪儿出错了
...全文
164 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ALANREDD 2014-03-09
  • 打赏
  • 举报
回复
引用 1 楼 u013529927 的回复:
你的className应该是 命名空间.类 你把那些class interface 移除program类 className再改一下就行了
谢谢你!已经解决!
St_Kalecgos 2014-03-08
  • 打赏
  • 举报
回复
晕。。。打错了。。。 就是把所有类和接口都移到Program类的外边 Program类里面就留main函数就行
St_Kalecgos 2014-03-08
  • 打赏
  • 举报
回复
你的className应该是 命名空间.类 你把那些class interface 移除program类 className再改一下就行了

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧