2016-07-14 16 views
0

Angenommen, ich habe ein Objekt mit einer .Start() -Methode. Ich möchte die Methode aufrufen, indem Sie in der Konsole eingeben, wie diese "object.Start()", die die .Start() -Methode aufrufen sollte.Call-Methode in Objekt mit Zeichenfolge

+1

Was ist die Frage? – Kinetic

+0

Er fragt, wie die Methode für ein Objekt aufgerufen wird, das er in die Konsole eingegeben hat. Wenn ich also "object.Run()" eintippe, wird die Run-Methode für sein Objekt aufgerufen. – Mangist

Antwort

1
class Program 
{ 
    static void Main(string[] args) 
    { 
     var obj = new object(); // Replace here with your object 

     // Parse the method name to call 
     var command = Console.ReadLine(); 
     var methodName = command.Substring(command.LastIndexOf('.')+1).Replace("(", "").Replace(")", ""); 

     // Use reflection to get the Method 
     var type = obj.GetType(); 
     var methodInfo = type.GetMethod(methodName); 

     // Invoke the method here 
     methodInfo.Invoke(obj, null); 
    } 
} 
+0

Kann ich Parameter damit verwenden? –

+0

Ja, bei der MethodeInfo.Invoke() anstelle der Übergabe von 'Null' für den zweiten Parameter können Sie ein Objektarray der Methodenparameter übergeben. Wenn Sie also "ABC" und 123 übergeben möchten, können Sie es mit methodInfo.Invoke (obj, neues Objekt [] {"ABC", 123}) aufrufen; – Mangist

+0

Ah danke. Und obj in "obj.GetType();" ist das Objekt, das die Methode enthält? –