我有一节课:
 public class Test1
 {
     public void assignData(List<CustomClass> customData, string targetFieldName)
     {             
         for(int i=0; i<customData.Count; i++)
         {
             if(customData[i].targetFieldName)
             {
                 customData[i].targetFieldName = newValue;
             }   
         }
     }
 }
 List<customClass1> list1;
 List<customClass2> list2;
customClass1和customClass2完全不同,但它们共享相同的字段'dateAdded'.我希望能够调用Test1.assignData(list1,"dateAdded")和Test1.assignData(list2,"dateAdded").并且list1和list2将更新.我怎样才能做到这一点?谢谢!
执行此操作的最佳方法是使用它们都实现的公共接口,将该dateAdded字段公开为属性
interface ICustomClass {
  DateTime dateAdded { get; set; }
}
然后这两个类都可以实现该接口,您可以更改函数以使用该接口
public void assignData(IEnumerable<ICustomClass> enumerable) {
  foreach (var customData in enumerable) {
    customData.dateAdded = newValue;
  }
}
编辑 
在评论中,OP表示他们希望对任何列表进行更新,而不管接口如何.在这种情况下,最好的方法是使用dynamic 
public void assignData(IEnumerable<object> enumerable) {
  foreach (dynamic customData in enumerable) {
    try { 
      customData.dateAdded = newValue;
    } catch { 
      // Object doesn't have dateAdded so just move on
    }
  }
}