现在有这么个想法
定义一个实体
public class Model1{
public int  id {get;set;}public string name {get;set;}public  DateTime createDate {get;set;}
}
引用的时候 var model=new Model1();
这个时候如何将这个实体初始化,也就是该实体下所有字段或者属性都是空的 而不是null
可能会有很多这样的实体 是不是需要用到通用类型和反射来实现

解决方案 »

  1.   

    public class Model1{
    public int  id {get;set;}
     
    public string name {get;set;}
     
    public  DateTime createDate {get;set;}public Model()
    {
    this.id=0;
    this.name=string.empty;
    this.createDate=DateTime.Now;
    }
    }用codesmith写一个模板,自动生成这样的实体类就可以了呀
      

  2.   

    各类型在系统中均有其默认值,如果有需要可以在定义类属性时,指定固定的默认值 也就是get里面设定你这里所说的空,对不同类型 显然含义是不一样的,所以定义类的时候指定根据类型指定默认值会比较容易一点
      

  3.   

    你的这个需求一般来说最好是放在构造方法里面去初始化,像2楼那样,但是具体用什么方法的话,根据自己的喜欢以及经验,CodeSmith是一个选择,你也可以自己写实体生成器,练练手也不错。放在构造方法里面初始化的效率要高一些,反射当然也可以,但是个人不推荐这样,毕竟发射的效率要低一些。
      

  4.   

    这样的需求有点奇怪,一般都是在用的时候判断
    或者再额外增加一个替代属性(值类型不需要),比如
    public string NameOrDefault
    {
         get{ return this.name ?? string.Empty;}
    }
      

  5.   

    看你的描述,就是实体为空时设置默认值,
    你可以用构造函数来解决或者get 就想6楼那样
      

  6.   

    仔细看好了,只说一次:
    public class Model1{
     public int  id {get;set;}   
    public string name {get;set;}   
    public  DateTime createDate {get;set;}
     } 想建立一个实体对象,是吧。好,非常简单,想要默认值是吧,好,也非常简单。不需什么基类啊、什么反射啊,想那么复杂干嘛!看如下代码!
    public class Model1{
    private int_id=0;
    private DateTime? _createDate=DateTime.Now ;
     public int  Id {get;set;}   
    public string name {get;set;}   
    public  DateTime CreateDate {get;set;}
     } 你构建公共属性前,都应该给类设置一个私有属性,这个私有属性你想设置什么初始值都可以。
      

  7.   

    就像private int _id=0;
    完全可以对属性设置初始值。