Ich habe 2 Klassen:ein Verfahren teilen
public class Articles
{
private string name;
public Articles(string name)
{
this.name = name;
}
public void Output()
{
Console.WriteLine("The class is: " + this.GetType());
Console.WriteLine("The name is: " + name);
}
}
Und
public class Questionnaire
{
private string name;
public Questionnaire(string name)
{
this.name = name;
}
public void Output()
{
Console.WriteLine("The class is: " + this.GetType());
Console.WriteLine("The name is: " + name);
}
}
Ich möchte ein Verfahren schreiben, die eine Ganzzahl (1 Bedeutung nehmen Articles
sollte zurückgegeben werden, 2 bedeutet Questionnaire
) und einen Namen.
Diese Methode muss eine Instanz einer dieser beiden Klassen zurück:
public [What type??] Choose(int x, string name)
{
if (x == 1)
{
Articles art = new Articles(name);
return art;
}
if (x == 2)
{
Questionnaire ques = new Questionnaire(name);
return ques;
}
}
Welche Rückgabetyp soll ich verwenden, so kann ich Output()
auf das Ergebnis nennen?
Wenn Sie denken, dass beide Typen (viele) Gemeinsamkeiten haben, sollten Sie beide von derselben Basisklasse erben lassen oder zumindest die gleiche Schnittstelle implementieren. –
Dies wird allgemein als [Enteneingabe] (http://en.wikipedia.org/wiki/Duck_typing) bezeichnet - auf jeden Fall mit C# möglich (siehe ['dynamic'] (http://msdn.microsoft.com/de-de/) Bibliothek/dd264741.aspx)), aber überlegen Sie sich, stark typisierte Lösungen in den Antworten zu verwenden. –