2016-06-24 14 views
0

Ich habe ein paar Objekte A, B und C.Artikel aus benutzerdefinierter Liste abrufen

Jedes dieser Objekte hat die Variable "Id". Ich möchte universelle Methode schreiben, die Rückholeinzelteilrückseite aus Liste der Objekt (List<A>, List<B> or List<C>)

Beispiel:

public T GetById(List<A> a, int id){ ..... } 

EDIT: Tut mir Leid. Ich habe Probleme mit Zugriff auf Id-Eigenschaften.

public T GetById(List<A> a, int id) 
{ 
foreach(T item: a) 
{ 
if(item.Id==id) // error - dont know about Id properties at the moment 
return item; 
} 
} 
+1

Was ist die Frage hier? Zeig uns, was du bisher versucht hast –

Antwort

2
`public T GetById<T>(List<T> list, int id)` 

Oder wenn Sie es als eine Erweiterung Methode wollen

public static T GetById<T>(this List<T> list, int id) 
{ 
    return list.FirstOrDefalut(item => item.Id == id); 
} 

Wenn A, B, C alle aus der gleichen Basisklasse Schnittstelle ableiten würde ich auch hinzufügen where-Klausel an die Funktion -> um sicher zu sein, in der Kompilierungszeit diese Eigenschaft Id wirklich existiert.

Verwandte Themen