大家好我是新手 有些问题不明白在开发项目的时候 用三层架构 为什么
 1 先定义字段   
         ///<summary>
        ///通讯录id
        ///</summary>
        private int _al_id;2 构造函数
public addresslist()
        {
        }public addresslist
        (
            int al_id,
            int al_u_id,
            int al_dept_id,
            string al_duty,
            string al_mobile,
                   )3设置属性
public int al_id
        {
            get { return _al_id; }
            set { _al_id = value; }
        }这样有什么好处呢?
为什么不直接写 写方法 自动生成sql语句 数据入库?

解决方案 »

  1.   

    属性提供功能强大的方法以将声明信息与   C#   代码(类型、方法、属性等等)相关联。与程序实体关联后,属性可在运行时查询,并可以以任意多种方式使用。  
       
      属性的用法示例包括:    
       
      将帮助文档与程序实体关联(通过   Help   属性)。    
      将值编辑器关联到   GUI   框架中的特定类型(通过   ValueEditor   属性)。    
      除一个完整的示例外,本教程还包括以下主题:    
       
      声明属性类   您必须能够做的第一件事是声明属性。    
      使用属性类   创建属性后,接着应将属性与特定程序元素相关联。    
      通过反射访问属性   属性已与某程序元素关联后,可使用反射来查询属性存在及其值。    
       
       
      具体看看帮助:   
      

  2.   

    属性是自定义的元数据的标记和表现形式。  
      属性的使用一般是被动的。  
      两个部分组成:  
      属性的颁发者和属性的使用者。  
       
      属性的颁发者声明了某种意义。要求属性的使用者把符合该意义的构造型(类,成员,,)标记上它。  
      那么属性的颁发者,就能通过根据它们是否有标记属性,和属性的数据进行某种操作了。  
       
      其中属性的颁发者是主动地,而属性的使用者是被动的。  
       
      对于平时,我们和我们创建的类只做为属性的使用者。  
       
      例如对于可序列化的对象,我们只是定义:  
      [Serilizable]   public   class   NameInfo  
      {  
              private   string   n="Undefined";  
              public   string   Name  
              {  
                      get  
                      {  
                              return   n;  
                      }  
                      set  
                      {  
                              n=value;  
                      }  
              }  
      }  
      又例如在WebService里用到的WebServiceAttribute和WebMethodAttribute  
       
      什么时候我们才做属性的颁布者,实现自己的属性?  
       
      对于一般的应用,属性是用不上的。通常的扩展都使用虚拟继承来实现。  
      只有当你做的东西有自己或其他人进行扩展时,才考虑使用自定义属性。  
       
      我这里没法说得明白。下面放个容易理解为什么使用属性的例子吧:  
      (这个例子需要些反射的知识)  
       
      using   System;  
      using   System.Reflection;  
       
      using   定义;  
      using   颁发者;  
      using   使用者;  
      using   程序;  
       
      namespace   定义  
      {  
      public   interface   IJob  
      {  
      void   Work();  
      }  
      }  
       
      namespace   颁发者  
      {  
      //定义一个Slow的属性。它只能使用在方法上  
       
      [AttributeUsage(AttributeTargets.Method)]  
      public   class   SlowAttribute:Attribute  
      {  
      string   desc;  
      public   SlowAttribute(string   waitdesc)  
      {  
      desc=waitdesc;  
      }  
      public   string   WaitDescription  
      {  
      get  
      {  
      return   desc;  
      }  
      }  
      }  
      }  
       
      namespace   使用者  
      {  
      public   class   学习DotNet   :   IJob  
      {  
      public   void   Work()  
      {  
      Console.WriteLine("-->学习完毕");  
      }  
      }  
      public   class   精通DotNet   :   IJob  
      {  
      [Slow("很久")]  
      public   void   Work()  
      {  
      System.Threading.Thread.Sleep(3000);  
      Console.WriteLine("........................精通完毕");  
      }  
      }  
      }  
       
      namespace   程序  
      {  
      public   interface   IJobExecutor  
      {  
      void   Execute(IJob   job);  
      }  
       
      class   Util  
      {  
      static   public   MethodInfo   FindJobWork(IJob   job)  
      {  
      InterfaceMapping   map=job.GetType().GetInterfaceMap(typeof(IJob));  
      return   map.TargetMethods[0];  
      }  
      }  
       
      public   class   浮躁的人   :   IJobExecutor  
      {  
      public   void   Execute(IJob   job)  
      {  
      MethodInfo   mi=Util.FindJobWork(job);  
      bool   isslow=mi.IsDefined(typeof(SlowAttribute),false);  
      if(!isslow)  
      {  
      job.Work();  
      Console.WriteLine("这么点小东西还难得到我?");  
      }  
      else  
      {  
      Console.WriteLine("靠,这么麻烦,老子不学了!!");  
      }  
      }  
      }  
      public   class   耐心的人   :   IJobExecutor  
      {  
      public   void   Execute(IJob   job)  
      {  
      MethodInfo   mi=Util.FindJobWork(job);  
      bool   isslow=mi.IsDefined(typeof(SlowAttribute),false);  
      if(!isslow)  
      {  
      job.Work();  
      Console.WriteLine("努力,加油。");  
      }  
      else  
      {  
      SlowAttribute   sa=(SlowAttribute)mi.GetCustomAttributes(typeof(SlowAttribute),false)[0];  
      Console.WriteLine("虽然做这个需要"+sa.WaitDescription+",但是我要把它完成。");  
      job.Work();  
      Console.WriteLine("哈哈。OK了");  
      }  
      }  
      }  
      }  
       
      namespace   ConsoleApplication1  
      {  
      class   Class1  
      {  
      [STAThread]  
      static   void   Main(string[]   args)  
      {  
      IJob   j1=new   学习DotNet();  
      IJob   j2=new   精通DotNet();  
       
      IJobExecutor   exec1=new   浮躁的人();  
      IJobExecutor   exec2=new   耐心的人();  
       
      Console.WriteLine();  
      Console.WriteLine("广播:浮躁的人的:");  
      Console.WriteLine();  
       
      Console.WriteLine("广播:学习:");  
      exec1.Execute(j1);  
      Console.WriteLine("广播:精通:");  
      exec1.Execute(j2);  
       
      Console.WriteLine();  
      Console.WriteLine("广播:耐心的人的学习:");  
      Console.WriteLine();  
       
      Console.WriteLine("广播:学习:");  
      exec2.Execute(j1);  
      Console.WriteLine("广播:精通:");  
      exec2.Execute(j2);  
      }  
      }  
      }  
        
      

  3.   

    你写的这个应该是针对业务实体的吧,如果是的话,一般都放到一个统一的model里面,主要的作用是当作参数使用~