2016-08-03 40 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