在asp.net中创建静态对象列表

时间:2012-02-25 00:32:28

标签: c# asp.net static appdomain

是否可以检索在当前appdomain中创建的所有静态对象?我正在尝试为现有的asp.net网站编写调试页面。它在基于单例对象的缓存中保存了大量信息。

感谢

2 个答案:

答案 0 :(得分:0)

这是让你入门的东西:

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.
    }
}

答案 1 :(得分:-1)

我前段时间遇到thisthis。您需要知道包含这些静态字段的类型。但是你可以迭代所有加载的组件,如this并检查每种类型。