Ich habe eine große Sammlung von automatisch generierten Objekten. Obwohl sie alle aus verschiedenen, nicht verwandten Klassen bestehen, teilen sich alle Objekte einige grundlegende Eigenschaften (Name, ID usw.). Ich kontrolliere nicht die Generierung dieser Objekte, daher kann ich leider nicht den idealen Ansatz zur Implementierung einer Schnittstelle wählen. Ich möchte eine Methode erstellen, in der ich ein beliebiges dieser Objekte übergebe und etwas unter Verwendung dieser gemeinsamen Eigenschaften tue.Methode zum Behandeln von Objekten mit gemeinsamen Eigenschaften, aber unterschiedlichen Objekttypen
Die allgemeine Idee wäre so etwas wie:
someObj a = new someObj();
a.name = "sara";
diffObj b = new diffObj();
b.name = "joe";
string phrase = string.Format("I am with {0} and {1}",
getName(a), getName(b));
private string getName(object anyObjWithName)
{
return anyObjWithName.name;
}
aber natürlich funktioniert das nicht.
Ich dachte, eine generische Methode könnte die Antwort halten, aber die einzige Möglichkeit, wie ich es mit dem aktuellen Typ aufrufen kann, ist genericMethod.Invoke
, die immer noch das gleiche Problem der nicht in der Lage, die Eigenschaften des übergebenen Objekts zu lösen in der Methode. Dies ist ungleich Calling generic method with a type argument known only at execution time oder How to call generic method with a given Type object?, wobei nur der Typ oder Eigenschaften des Typs in der Methode verwendet werden, im Gegensatz zu Eigenschaften des Objekts.
Ich bin mir bewusst, dass dies (sehr) anfällig für Fehler wäre, aber ich kann garantieren, dass alle angetroffenen Objekte die gemeinsamen Eigenschaften manipuliert haben.
Verwenden Sie eine Schnittstelle? – Michael
Versuchen Sie entweder, eine Schnittstelle zu deklarieren, um die Objekte für allgemeine Eigenschaften in Beziehung zu setzen, oder verwenden Sie Reflektion. – Nayan
http://msdn.microsoft.com/en-us/library/64syzecx.aspx – Crisfole