Ich habe mir die Haare ausgezogen, um das Problem zu lösen. Was ich versuche, ist eine "Karte" zu erstellen, wie Objekte in ein bisschen Code verwendet werden, an dem ich gerade arbeite. Betrachten Sie es als eine erweiterte Nutzung. Der einfachste Weg, dies zu zeigen, ist mit gutem Beispiel:.NET Reflection: Hier finden Sie gebrauchte Typen
public class MasterClass
{
Type1 type1;
Type2 type2;
Type3 type3;
void InitializeData()
{
type1 = new Type1(this);
type2 = new Type2(this);
type3 = new Type3(this);
}
}
public class Type1
{
private MasterClass _master;
public Type1(MasterClass master)
{
_master = master;
}
public void Something()
{
//use _master.type2 and _master.type3 here
}
}
public class Type2
{
private MasterClass _master;
public Type2(MasterClass master)
{
_master = master;
}
public void Something()
{
//use _master.type3 here
}
}
public class Type3
{
private MasterClass _master;
public Type3(MasterClass master)
{
_master = master;
}
public void Something()
{
//use _master.type1 and _master.type2 here
}
}
Was ich versuche, ist eine Zuordnung zu tun bekommen oder dass berichten, im Fall des Beispiels würde so etwas geben: von
Typ1 verwendet: { Typ3}
Typ2 eingesetzt durch: {Typ1, Typ3}
Typ3 verwendet durch: {Typ1, Typ2}
Wenn ich es in ein Wörterbuch bekommen kann, dann bin ich nach Hause. :-)
Was ich versucht habe:
Ich habe versucht, über die Versammlungen gehen, jede Art, dann wird jedes Verfahren des IL-Arrays ziehen und dann ohne Glück die Operanden zu analysieren versucht. Ich habe sogar versucht, die Source-Dateien mit einigen regulären Ausdrücken zu durchsuchen, aber ich habe Tausende von Klassen, die in verschiedenen Stilen geschrieben sind, was bedeutet, dass ich einige Referenzen verpasse.
Ich kann Reflektor & &/|| verwenden Resharper, um eine einzelne Referenz zu einer Zeit zu bekommen, aber ich möchte sie alle auf einmal bekommen.
Irgendwelche Vorschläge?
Würde ein Reflector Add-in, dass die Arbeit erledigt, angemessen? – driis
Möchten Sie dies auf programmatische Weise erreichen oder einfach nur ein Werkzeug verwenden? – Ucodia
C# ist eine Programmiersprache. Es hat keine Reflexion. Das ist .NET. –