2016-08-03 9 views
0

Ich habe 3 Listen von co, sto und per. Jede Entität co sto und per hat eine Feld-GUID. Ich brauche eine Methode, um guid für jede Liste so etwas wiegenerische Füllung einer Eigenschaft in .net

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

      } 
     } 

bitte helfen zu erzeugen. danke

Antwort

1

Sie können mit einem generischen Ansatz, um dies zu tun und Reflexion:

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())); 
} 

Wenn GUID ist kein öffentliches Eigentum, sondern ein eigenes Feld, das Sie GetField() stattdessen verwenden können:

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

danke , aber haben Sie eine Idee, Polymorphie zu benutzen, um das zu lösen? – Ovidiu

+0

@Ovidiu mit Polymorphie Sie benötigen drei Methoden für die Parameter Typen 'List ', 'List ' und 'List ', aber würde keine Reflexion benötigen, aber einfach 'x.GUID = Guid.NewGuid()' seit diesen drei Typen haben dieses Feld/diese Eigenschaft. –

+0

der Punkt ist, muss ich diese Methode mit der Parameterliste machen, um eine einzige Methode zu haben – Ovidiu

Verwandte Themen