string 类型的属性,判断为空的问题!!!
icod 2008-07-11 09:20:15 我有一张部门表
序号 id int 主键
名称 departmentName nvarchar(50) 不能为空
备注 ReMark nvarchar(4000) 可为空
然后做一个对应的ORM
很多人和很多书上在构造函数里直接将参数赋值给类内部的私有字段,我认为这样,在别人用这个类来new一个对象时,有可能将不对的参数传进来,于是我在构造函数里直接将参数赋值给属性,(当然默认的构造函数设置私有字段默认值)
代码如下:
public class Department
{
private int _id;
private string _departmentName;
private string _reMark;
public int ID
{
get { return _id; }
set
{
if (value < 1)
new ArgumentException("部门ID不能小于1!");
_id = value;
}
}
public string DepartmentName
{
get { return _departmentName; }
set
{
if (string.IsNullOrEmpty(value))
throw new ApplicationException("部门名称不能为空!");
if (value.Length > 50)
throw new ApplicationException("部门名称不能超过50个字符!");
_departmentName = value;
}
}
public string ReMark
{
get { return _reMark; }
set
{
if( Convert.IsDBNull(value) || value==null )
_reMark=String.Empty;
else if (value.Length > 4000)
throw new ArgumentException( "备注不能大于4000个字符 ");
_reMark = value;
}
}
public Department(int id, string departmentName, string remark)
{
ID = id;
DepartmentName = departmentName;
ReMark = remark;
}
public Department(string departmentName, string remark)
: this(0, departmentName, remark)
{
}
public Department()
{
_id = 0;
_departmentName = string.Empty;
_reMark=string.Empty;
}
/// <summary>
/// 创建一个新部门
/// </summary>
/// <param name="depName"></param>
/// <param name="remark"></param>
public void Insert(string departmentName, string ReMark)
{
if (string.IsNullOrEmpty(ReMark))
ReMark = string.Empty;
Department dep = new Department(departmentName, ReMark);
DALDepartment daldep = new DALDepartment();//创建数据层
daldep.InsertDepartment(dep);
}
........代码略
无论在insert里还是在属性里检查 remark 是否为空,都提示错误
未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。
源错误:
行 62: set
行 63: {
行 64: if if( Convert.IsDBNull(value) || value==null )
..................
该如何设计?