用户对象的DictionaryEntry
本文关键字:DictionaryEntry 对象 用户 | 更新日期: 2023-09-27 18:20:41
我有一个自定义的用户对象类appuser
public class appuser
{
public Int32 ID { get; set; }
public Int32 ipamuserID { get; set; }
public Int32 appID { get; set; }
public Int32 roleID { get; set; }
public Int16 departmenttypeID { get; set; }
public generaluse.historycrumb recordcrumb { get; set; }
public appuser() { }
public appuser(DataRow dr)
{
ID = Convert.ToInt32(dr["AppUserID"].ToString());
ipamuserID = Convert.ToInt32(dr["IpamUserID"].ToString());
appID = Convert.ToInt32(dr["AppID"].ToString());
roleID = Convert.ToInt32(dr["AppRoleID"].ToString());
departmenttypeID = Convert.ToInt16(dr["AppDepartmentTypeID"].ToString());
recordcrumb = new generaluse.historycrumb(dr);
}
public void appuserfill(DictionaryEntry de, ref appuser _au)
{
//Search for key in appuser given by de and set appuser property to de.value
}
}
在不知道密钥最初是什么的情况下,如何在作为DictionaryEntry中的密钥传递的appuser对象中设置属性?
例如:de.key=ipamuserID,在_au中动态查找属性并设置值=de.value?
从技术上讲,您可以使用反射,但这不是一个好方法解决方案-尝试写入任意属性。有反射的解决方案可能是这样的:
//Search for key in appuser given by de and set appuser property to de.value
public void appuserfill(DictionaryEntry de, ref appuser _au) { // <- There's no need in "ref"
if (Object.ReferenceEquals(null, de))
throw new ArgumentNullException("de");
else if (Object.ReferenceEquals(null, _au))
throw new ArgumentNullException("_au");
PropertyInfo pInfo = _au.GetType().GetProperty(de.Key.ToString(), BindingFlags.Instance | BindingFlags.Public);
if (Object.ReferenceEquals(null, pInfo))
throw new ArgumentException(String.Format("Property {0} is not found.", de.Key.ToString()), "de");
else if (!pInfo.CanWrite)
throw new ArgumentException(String.Format("Property {0} can't be written.", de.Key.ToString()), "de");
pInfo.SetValue(_au, de.Value);
}