Für die Klasse zu überprüfen:C# Reflexionsverfahren Körper Zuordnung unten an Feldern
class A
{
private List<int> intList;
private List<bool> boolList;
public InitializeClass()
{
intList = new List<int>();
}
}
Ich möchte Reflexion verwenden, um einen Linter/post-Compiler von Art zu schreiben, zu überprüfen, ob eine bestimmte Methode wirklich jede Zuordnung haben zu den Klassenfeldern oder nicht. Der Zweck ist, meine eigenen Fehler automatisch zu überprüfen. Die Klasse kann keinen Konstruktor verwenden, daher muss ich InitializeClass()
manuell aufrufen.
Ich habe MethodInfo method
und alle Felder der Klasse FieldInfo[] fields
, die ich bereits überprüfen wollte, aber keine Ahnung, wie man von hier aus geht. Aus dem obigen Beispiel sollte er erkennen können, dass ich boolList
im Methodenkörper nichts zugewiesen habe.
Gibt es einen Grund, warum Sie dies aus dem kompilierten Code tun müssen? Die Verwendung der Roslyn-API wäre eine viel einfachere Möglichkeit, den Code zu analysieren. –
Ja, das ist eigentlich Unity3D Plugin. Unity kann nach dem Kompilieren im Programm selbst eine beliebige statische C# -Methode ausführen. Daher wollte ich dort den Checker ausführen, um alle Skripts zu analysieren, die ich in der aktuellen Szene verwende. – 5argon
Aber wissen Sie nicht wirklich den Code, den Sie zur Build-Zeit überprüfen möchten? Wie viel Aufwand sind Sie bereit, dies zur Ausführungszeit gegenüber der Buildzeit zu unterstützen? Ich vermute, dass das Finden einer IL-Parsing-Bibliothek, die auf Unity funktioniert, eine große Herausforderung sein wird. –