2016-06-30 3 views
2

Ich habe 3 Klassen jeweils mit einer Methode, die einige Berechnungen ausführen und die Werte in verschiedenen Feldern schreiben, schreibt diese Methode auch den Klassennamen in ein Feld, von dem die Methode ausgeführt wird.Run dynamische Klasse basierend auf Feld Wert

Das funktioniert gut.

Ich habe vor kurzem eine Schaltfläche erstellt, um die Methode erneut auszuführen, aus der Klasse, aus der die Methode ursprünglich ausgeführt wurde.

Zum Beispiel:

Class1 RunMethod 
Class2 RunMethod 
Class3 RunMethod 

Ich bin jetzt die Methode für die Aktion-Taste erstellen, wenn geklickt habe, aber ich habe keine Ahnung, wie man eine bestimmte Methode aus der Klasse laufen, wo es von ursprünglich lief. Der Klassenname ist in einem Feld.

Ich denke, ich kann dies mit SysDictClass erreichen, aber ich habe keine Ahnung, wie ich anfangen soll, wie kann ich am besten mit dieser Methode beginnen?

Antwort

4

Dies sollte Ihnen die Idee bringen. Ich habe es in AX 2009 geschrieben, aber es sollte wahrscheinlich auch in AX 2012 funktionieren.

public static client void SysDictClassJob() 
{ 
    ClassId  classId; 
    Object  obj; 
    SysDictClass sysDictClass; 
    ; 

    // Create instance (if you are going to call a member method) 
    classId = className2Id('SomeClass'); 
    obj = classFactory.createClass(classId); 

    // Invoke member method 
    sysDictClass = new SysDictClass(classId); 
    sysDictClass.callObject('yourMemberMethod', obj); 

    // Invoke static method 
    sysDictClass.callStatic('yourStaticMethod'); 
}