Создание списка статических объектов в asp.net - PullRequest
0 голосов
/ 25 февраля 2012

Возможно ли получить все статические объекты, которые были созданы в текущем домене приложения? Я пытаюсь написать страницу отладки для существующего сайта asp.net. который содержит много информации в кешах, основанных на одноэлементных объектах.

спасибо

Ответы [ 2 ]

0 голосов
/ 25 февраля 2012

Вот кое-что, с чего можно начать:

IList<Assembly> assemblies = AppDomain.CurrentDomain.GetAssemblies();

List<Type> allTypes = new List<Type>();

foreach (Assembly assembly in assemblies)
{
    var types = from t in assembly.GetTypes()
                where bootStrapperType.IsAssignableFrom(t)
                    && !t.IsInterface && !t.IsAbstract
                select t;

    allTypes.AddRange(types);
}

foreach(Type type in allTypes)
{
    var fieldsPublic = type.GetFields(BindingFlags.Public|BindingFlags.Static);
    foreach(var field in fieldsPublic)
    {
       var nameAndValue = field.Name + " = " + field.GetValue(null);
       // Do something
    }
    var fieldsPrivate = type.GetFields(BindingFlags.Private|BindingFlags.Static);
    foreach(var field in fieldsPrivate)
    {
       var nameAndValue = field.Name + " = " + field.GetValue(null);
       // Do something.
    }
}
0 голосов
/ 25 февраля 2012

Я встречал это и это некоторое время назад.Вам нужно знать типы, которые содержат эти статические поля.Но вы можете перебирать все загруженные сборки, например this , и проверять каждый тип.

...