的內部驗證規則,我有class
這樣實現
public class EmployeeInfo
{
public string EmployeeName { get; set; }
public string PhoneNumber { get; set; }
public string Office { get; set; }
public string Department { get; set; }
}
我創建方法,它SPListItemCollection
爲EmployeeInfo
class.There對象的參數,返回列表裏SPList
沒有限制,當你創建新項目可以將一些字段留空,所以我使用reflection
來確定字段是否爲null
,然後在填充EmployeeInfo
對象時插入空字符串以避免異常。
public List<Models.EmployeeInfo> GetEmployeeInfo(SPListItemCollection splic)
{
var listEmployeeInfo = new List<Models.EmployeeInfo>();
var propertyNames = new List<string>() { "EmployeeName",
"Department",
"Office",
"PhoneNumber"};
foreach (SPListItem item in splic)
{
var employeeInfo = new Models.EmployeeInfo();
foreach (var propertyName in propertyNames)
{
string newData = "";
if (item[propertyName] != null)
{
newData = item[propertyName].ToString();
}
employeeInfo.GetType().GetProperty(propertyName).SetValue(employeeInfo, newData, null);
}
listEmployeeInfo.Add(employeeInfo);
}
return listEmployeeInfo;
}
後來我才知道,那是不好的做法,使用reflection
嵌套的循環裏面,所以我在尋找不同的方法。 有沒有什麼機會可以在EmpployeeInfo
類中做一些預驗證規則,比如驗證方法,或者在類屬性中編寫一些代碼,而不是在GetEmployeeInfo
方法中,通過調用該方法來填充屬性? 謝謝。
通過驗證規則,你的意思是屬性值必須限制在某些值?你當然可以通過在'get {}中寫入某些東西並設置{}來做到這一點 – Ian