1. 在用lambda表達式做過濾的時候,經常會遇到過濾條件不確定的情況,我們可以用反射來實現動態條件。
list.Where(t => t.GetType().GetProperty(attrName).GetValue(t, null) != null
&& t.GetType().GetProperty(attrName).GetValue(t, null).ToString()== compateStr)
attrName 為list中的某個字段,
compateStr為這個字段需要比較的值
2. 利用反射動態調用類庫中的方法
private PatientInfoBLL mergeBll= new PatientInfoBLL(); parameters[0] = oneValue; parameters[1] = twoValue; string result = mergeBll.GetType().GetMethod(list[i].funcName).Invoke(mergeBll, parameters);
list[i].funcName 為PatientInfoBLL 類中的方法名,循環動態調用
3. 利用反射動態設置對象屬性的值
model.GetType().GetProperty(attrName).SetValue(model, value);
attrName 為model的屬性,value為需要賦給的值,兩個均可動態生成