C\#대상 맵 의 고성능 프로젝트

2796 단어 C#개체 맵
1.이전에 AutoMapper 프레임 워 크 를 사용 하 는 것 이 유연성 이 부족 하고 표현 식 트 리 Api 를 통 해 대상 맵 을 실현 하 는 것 이 싫 었 습 니 다.복잡 한 유형 과 내장 유형 이 나타 날 때 성능 이 직선 으로 떨 어 지고 직렬 화 보다 빠 르 지 않 았 습 니 다.
2.AutoMapper 가 복잡 한 유형 과 내장 유형 을 처리 할 때 성능 이 매우 떨 어 지 는 상황 에 대해 스스로 간략화 판 대상 이 매 핑 하 는 고성능 방안 을 실현 한다.

public class Article
 {
  public int Id { get; set; }
  public string CategoryId { get; set; }
  public string Title { get; set; }
  public string Pic { get; set; }
  public string Host { get; set; }
  public string PicHost => Pic.FormatHostUrl(Host);
  public string Content { get; set; }
  public bool TopStatus { get; set; }
  public DateTime PublishDate { get; set; }
  public string LastUpdateUser { get; set; }
  public DateTime LastUpdateDate { get; set; }
  public bool IsTeacher { get; set; }
  public bool IsParent { get; set; }
  public bool IsOrg { get; set; }
  public bool IsLeaner { get; set; }
  public string ToUserStr
  {
   get
   {
    List<string> strArr = new List<string>();
    if (IsLeaner)
    {
     strArr.Add("  ");
    }
    if (IsOrg)
    {
     strArr.Add("  ");
    }
    if (IsParent)
    {
     strArr.Add("  ");
    }
    if (IsTeacher)
    {
     strArr.Add("  ");
    }
    return string.Join(",", strArr);
   }
  }
  public int OrgId { get; set; }
  public object OrgInfo { get; set; }
  public string IsPlatformStr => OrgId == 0 ? "  " : "  ";
 }
이제 우 리 는 두 줄 의 코드 를 사용 하여 대상 맵 문 제 를 해결 합 니 다.

조작 이 더욱 편리 하도록 다 중 대상 맵

대상 맵 기능 을 실현 하 는 코드 는 다음 과 같 습 니 다.

public static T CopyObjValue<T>(this T toobj, Object fromobj) where T : class
  {
   if (fromobj != null && toobj != null)
   {
    var otherobjPorps = fromobj.GetType().GetProperties();
    foreach (var formp in otherobjPorps)
    {
     var top = toobj.GetType().GetProperty(formp.Name);
     if (top != null)
     {
      try
      {
       top.SetValue(toobj, formp.GetValue(fromobj));
      }
      catch (Exception e)
      {
       Console.WriteLine(e.Message);
      }
     }
    }
   }
   return toobj;
  }
C\#대상 맵 의 고성능 방안 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 고성능 대상 맵 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기