He estado tirando de mi cabello tratando de resolver esto. Lo que intento hacer es construir un 'mapa' de cómo se usan los objetos en un código en el que estoy trabajando. Piénselo como un uso mejorado de Find. La forma más sencilla de mostrar esto es por ejemplo:.NET Reflection: Encuentra los tipos utilizados
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
}
}
Lo que estoy tratando de hacer es conseguir un mapeo o informan de que, en el caso del ejemplo, daría algo así como:
Tipo1 utilizado por: { Tipo 3}
Type2 utilizado por: {Tipo 1, Tipo 3}
tipo3 utilizado por: {Tipo 1, Tipo 2}
Si puedo conseguirlo en un diccionario, entonces estoy en casa. :-)
Lo que he intentado:
He intentado ir a través de los ensamblajes, cada tipo, cada método continuación, tirando de las matrices de IL y luego intentar analizar los operandos sin suerte. Incluso he intentado revisar los archivos fuente con algunas expresiones regulares, pero tengo miles de clases para revisar, escritas en varios estilos diferentes, lo que significa que omitiré algunas referencias.
Puedo usar Reflector & &/|| Resharper para obtener una referencia única a la vez, pero me gustaría obtenerlos todos a la vez.
¿Alguna sugerencia?
¿Un reflector complemento que hace el trabajo, ser adecuada? – driis
¿Desea lograr esto de forma programática o simplemente usando una herramienta? – Ucodia
C# es un lenguaje de programación. No tiene Reflexión Eso es .NET. –