asp.net 반사 코드 작성량 감소

2875 단어
 
  
public bool Add(Liuyan refmodel)
    {
        string sql = "insert into liuyan(name,phone,zhiwei,gongsi,addr,country,dianyou,content,adddate)values(@name,@phone,@zhiwei,@gongsi,@addr,@country,@dianyou,@content,@adddate)";
        OleDbParameter[] parameters ={
            new OleDbParameter("@name",OleDbType.VarChar),
            new OleDbParameter("@tel",OleDbType.VarChar),
            new OleDbParameter("@zhiwei",OleDbType.VarChar),
            new OleDbParameter("@gongsi",OleDbType.VarChar),
            new OleDbParameter("@addr",OleDbType.VarChar),
            new OleDbParameter("@country",OleDbType.VarChar),
            new OleDbParameter("@dianyou",OleDbType.VarChar),
            new OleDbParameter("@content",OleDbType.VarChar),
            new OleDbParameter("@adddate",OleDbType.VarChar)
        };
        parameters[0].Value=model.Xingming;
        parameters[1].Value=model.Tel;
        parameters[2].Value=model.Zhiwei;
        parameters[3].Value=model.Gongsi;
        parameters[4].Value=model.Addr;
        parameters[5].Value=model.Country;
        parameters[6].Value=model.Dianyou;
        parameters[7].Value=model.Content;
        parameters[8].Value=model.Adddate;
        return sqlHelper.executeCommand(sql, parameters);
    }
 

본고는 반사에 대해 말한다. 지금 이 코드의 어느 위치에서 반사를 사용하는지 본인의 인코딩 과정에서 힘을 아끼기 위해 기발한 생각을 한다.
 
  
   parameters[0].Value=model.Xingming;
        parameters[1].Value=model.Tel;
        parameters[2].Value=model.Zhiwei;
        parameters[3].Value=model.Gongsi;
        parameters[4].Value=model.Addr;
        parameters[5].Value=model.Country;
        parameters[6].Value=model.Dianyou;
        parameters[7].Value=model.Content;
        parameters[8].Value=model.Adddate;

클래스에 많은 속성이 있을 때 위의 이 코드는 반사로 값을 부여할 수 있다
  
 

        
  
// using System.Reflection;

     Type t = refmodel.GetType();
       for (int i = 0; i < t.GetProperties().Length; i++)
        {
            parameters[i].Value= t.GetProperties()[i].GetValue(refmodel, null);
        }


여기에 반사를 사용하여 클래스의 모든 속성을 가져옵니다
그리고 속성을 옮겨다니며 옮겨다니는 속성 값을 매개 변수에 부여합니다
물론 여기는 추가하는 방법입니다. 모델이 없습니다.Id
그래서 for가 순환할 때 1부터 시작해야 돼요.
그리고parameters[i].Value가 값을 부여할 때 i는 1parameters[i-1]를 줄여야 한다.Value
이렇게 해서 나중에 데이터 층을 쓸 때 매개 변수에 값을 매기면 굳이 하나하나 복사해서 붙일 필요가 없어요.
어떻게 개인적으로, 조심스럽게 여러분과 공유하고 싶은지.
코드 생성 도구를 사용하는 건 무시해도 돼요.

좋은 웹페이지 즐겨찾기