Ich frage mich, ist es möglich, eine Erweiterungsmethode zu erstellen, die mit einer Reihe von verschiedenen Typen funktioniert, vorausgesetzt, sie haben die gleiche Eigenschaft? Zum Beispiel:Generische Erweiterungsmethode für verschiedene Typen mit den gleichen Eigenschaften
public static T GetObjectByIdOrName<T>(this IEnumerable<T> collection, Mapping mapping) where T : IType1, IType2, IType3
{
return collection.FirstOrDefault(x => x.Id == mapping.ObjectId || x.Name == mapping.ObjectName);
}
Alle Typen haben die ID und die Namen Eigenschaften, so hoffte ich dies möglich wäre - allerdings ist der Compiler mir zu sagen, dass es zwischen Type1.Id und Typ2 Id eine mehrdeutige Referenz ...
Gibt es eine Möglichkeit, dies zu implementieren? (Ich kann keine gemeinsame Basis für sie erstellen)
Sind diese Klassen unter Ihrer Kontrolle? – Colin
Diese Einschränkung bedeutet, dass der Typ alle 3 Schnittstellen implementieren muss. Wenn sie alle dieselben Eigenschaften aufweisen, dann weiß sie nicht, welche Schnittstelle sie durchlaufen soll, falls eine der Eigenschaften explizit implementiert wird. – juharr
können Sie umgestalten, damit jede Schnittstelle eine Basisschnittstelle verwendet? –