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

Posted

技术标签:

【中文标题】在 asp.net 中创建静态对象列表【英文标题】:Creating a list of static objects in asp.net 【发布时间】:2012-02-25 00:32:28 【问题描述】:

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

谢谢

【问题讨论】:

【参考方案1】:

以下是帮助您入门的内容:

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.
    

【讨论】:

谢谢 - 这为我指明了正确的方向。为了从结果中删除常量,我还需要检查 field.IsLiteral【参考方案2】:

我之前遇到过this 和this。您需要知道包含这些静态字段的类型。但是您可以遍历所有已加载的程序集,例如 this 并检查每种类型。

【讨论】:

虽然理论上这可以回答这个问题(顺便说一句,它没有回答),it would be preferable 在这里包含答案的基本部分,并提供参考链接。

以上是关于在 asp.net 中创建静态对象列表的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.NET MVC 中创建 CheckBoxListFor 扩展方法?

使用 C# 在 ASP.NET MVC 3 中创建级联下拉列表的最简单方法

使 asp.net 单选按钮列表显示为引导按钮组

将 jQuery JSON 对象保存到 SQL 表中,而无需在 MVC ASP.NET Core 中创建视图模型类

asp.net 导出到 Access

win7+iis7.5+asp.net下 CS0016: 未能写入输出文件“c:WindowsMicrosoft.NETFrameworkv2.0.50727Temporary ASP.NE