Reflection convert all propperties


/ Published in: C#
Save to your folder(s)

openpacs


Copy this code and paste it in your HTML
  1. private static object Convert2DataContract2(object objDataTypeIn, string strTableName)
  2. {
  3.  
  4. //@ Đổi từ M_AEM -> M_AemManager
  5. string strDataContractManager = strTableName.Substring(0, 3) + strTableName.Substring(3).ToLower() + "Manager.";
  6. //@ Đổi từ M_AEM -> M_AemDataContract
  7. string strDataContract = strTableName.Substring(0, 3) + strTableName.Substring(3).ToLower() + "DataContract";
  8. //@ Đổi từ M_AEM -> M_AemDataContract2
  9. string strDataContract2 = strTableName.Substring(0, 3) + strTableName.Substring(3).ToLower() + "DataContract2";
  10. //@ load Assembly chứa DataContract
  11. Assembly objAssemblyDataConntract = System.Reflection.Assembly.Load(ASEEMBLY_DATACONTRACT);
  12. //@ load Assembly chứa DataContract2
  13. Assembly objAssemblyDataConntract2 = System.Reflection.Assembly.Load(ASEEMBLY_DATACONTRACT2);
  14. //@ lấy kiểu tương ứng của M_AemDataContract
  15. Type objTypeIn = objAssemblyDataConntract.GetType(DATACONTRACT_NAMESPACE + strDataContractManager + strDataContract);
  16. //@ lấy kiểu tương ứng của M_AemDataContract
  17. Type objTypeOut = objAssemblyDataConntract2.GetType(DATACONTRACT_NAMESPACE2 + strDataContract2);
  18.  
  19. object objReturnTypeOut = Activator.CreateInstance(objTypeOut);
  20. //@ lấy tất cả thuộc tính của Data Contract
  21. PropertyInfo[] objListPropertyInfo = objTypeIn.GetProperties();
  22. foreach (PropertyInfo objPropertyInfoIn in objListPropertyInfo)
  23. {
  24. //@@ Lấy giá trị tương ứng của thuộc tính Data Contract
  25. object objProperty = objPropertyInfoIn.GetValue(objDataTypeIn, null);
  26. //@@ Lấy thuộc tính tương ứng của Data Contract2
  27. PropertyInfo objPropertyInfoOut = objTypeOut.GetProperty(objPropertyInfoIn.Name, BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance);
  28. //@@ Gán giá trị sang kết quả trả về
  29. objPropertyInfoOut.SetValue(objReturnTypeOut, objProperty, null);
  30. }
  31. //@ set thêm thuộc tính TableName cho kết quả trả về
  32. PropertyInfo objPropertyTableName = objTypeOut.GetProperty("TableName", BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance);
  33. objPropertyTableName.SetValue(objReturnTypeOut, strTableName, null);
  34. return objReturnTypeOut;
  35.  
  36. }

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.