Wenn Du tatsächlich nach einer Lösung für variable Methoden-Parameter suchst, dann hilft Dir Joachims Link weiter. Dein Beispiel läßt mich aber eher vermuten, dass Du ganz einfach das hier suchst:
Ich sehe folgende Möglichkeiten (zusammengefasst): - Methode mit Typparameter (generische Methode): public T Fetch<T>(T x) { return x; }
- Methodenüberladung: public int Fetch(int i) { return i; } public string Fetch(string s) { return s; } public string Fetch(string s, double x) { return s + x.ToString(); } ... usw.
- Param-Array (Variable Anzahl Parameter): public int Fetch(param int[] a) { return a[0]; }
- Vererbung: Abgeleitete Klassen sind zuweisungskompatibel zur Basisklasse: public string Fetch(Person p) { return p.Name; } Aufruf: Fetch( new Student() { Name="Peter" }); wobei die Klasse Student von Klasse Person erbt (class Student : Person).
- Schnittstellen: Ähnlich wie Klassenvererbung. Klassen die die Schnittstelle implementieren sind zuweisungskompatibel zur Schnittstelle: interface IDruckbar { void Drucken(); }
class Person : IDruckbar { public Name { get; set; } public void Drucken() { Console.WriteLine(Name); } }
public void Print (IDruckbar d) { d.Drucken(); }
Print(new Person { Name="John" });
- Und zu guter Letzt: Diese verschiedenen Ansätze sind miteinander kombinierbar.