2016-08-03 38 views
0

我有3个co,sto和per的列表。 每个实体都有一个域GUID。 我需要一些方法来生成GUID对于每个列表 像.net中的一些属性的通用填充

public static void FillGuids (List<> list) 
     { 
      foreach (var c in list) 
      { 

      } 
     } 

请帮助。 谢谢

回答

1

您可以用通用的方法和反思这样做:

public static void FillGuids<T>(List<T> list) 
{ 
    PropertyInfo prop = typeof(T).GetProperty("GUID"); 
    if (prop == null) return; // no GUID property 

    list.ForEach(x => prop.SetValue(x, Guid.NewGuid())); 
} 

如果GUID不是公共财产,但私人领域,你可以使用GetField()代替:

FieldInfo field = typeof(T).GetField("GUID", BindingFlags.NonPublic); 
+0

谢谢,但是你对使用多态性解决这个问题有任何想法吗? – Ovidiu

+0

@Ovidiu与多态性,你需要三种方法参数类型'列表','列表'和'列表',但不需要反射,但可以简单地设置'x.GUID = Guid.NewGuid()',因为这三个类型具有此字段/属性。 –

+0

重点是我需要使用参数列表制作该方法,以便拥有一个单独的方框 – Ovidiu