Ich habe eine abstrakte Klasse (Parent) mit einer Funktion namens funcA. Parent hat 4 Kinder und der Benutzer muss auswählen, auf welchen er zugreifen soll. Was ich tun muss, ist der Zugriff auf die übergeordnete Methode funcA in der Kind-Unterklasse, die vom Benutzer ausgewählt wurde und diese aktiviert.Gehen Sie zur Methode eines unbekannten Typs und führen Sie sie aus C#
Parent:
public abstract class Parent
{
public string PropA {get; set;}
public string PropB {get; set;}
public DateTime PropC {get; set;}
public DateTime PropD {get; set;}
public abstract void FuncA();
}
Kind:
public class ChildA: Parent
{
public string PropE {get; set;}
public string PropF {get; set;}
public override void FuncA()
{
// Some Code
}
}
Main:
public static void Main(string[] args)
{
Console.WriteLine("Enter the type of child: ");
string type = Console.Readline();
// I need to identify which child is type, access that child's FuncA and
// run it.
}
Der String-Typ als ein bestehendes Kind validiert. Es gibt keine Möglichkeit, dass der Benutzer einen Typ eingibt, der nicht existiert.
Verwenden Sie Reflexion? 'Geben Sie t = Type.GetType (thatType); t.GetMethod ("FuncA"). Invoke (...); ' –
Ich habe es versucht, aber Invoke fordert ein Objekt zum Ausführen der Methode an. Alles was ich habe ist der Typ und ich kann kein Objekt eines unbekannten Typs erstellen. –
@EinatLugassy Sie können _oder _ nicht wissen, wie man? –