创建像 ASP.NET MVC 3 ViewBag 这样的类?

2024-04-10

我有一种情况,我想做一些类似于 ASP.NET MVC 3 ViewBag 对象所做的事情,其中​​属性是在运行时创建的?或者是在编译时?

无论如何,我想知道如何创建具有这种行为的对象?


我创建了这样的东西:

public class MyBag : DynamicObject
{
    private readonly Dictionary<string, dynamic> _properties = new Dictionary<string, dynamic>( StringComparer.InvariantCultureIgnoreCase );

    public override bool TryGetMember( GetMemberBinder binder, out dynamic result )
    {
        result = this._properties.ContainsKey( binder.Name ) ? this._properties[ binder.Name ] : null;

        return true;
    }

    public override bool TrySetMember( SetMemberBinder binder, dynamic value )
    {
        if( value == null )
        {
            if( _properties.ContainsKey( binder.Name ) )
                _properties.Remove( binder.Name );
        }
        else
            _properties[ binder.Name ] = value;

        return true;
    }
}

然后你可以像这样使用它:

dynamic bag = new MyBag();

bag.Apples = 4;
bag.ApplesBrand = "some brand";

MessageBox.Show( string.Format( "Apples: {0}, Brand: {1}, Non-Existing-Key: {2}", bag.Apples, bag.ApplesBrand, bag.JAJA ) );

请注意,“JAJA”的条目从未创建...并且仍然不会引发异常,只是返回 null

希望这对某人有帮助

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

创建像 ASP.NET MVC 3 ViewBag 这样的类? 的相关文章

  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • GLKit的GLKMatrix“列专业”如何?

    前提A 当谈论线性存储器中的 列主 矩阵时 列被一个接一个地指定 使得存储器中的前 4 个条目对应于矩阵中的第一列 另一方面 行主 矩阵被理解为依次指定行 以便内存中的前 4 个条目指定矩阵的第一行 A GLKMatrix4看起来像这样 u
  • 在结构中使用 typedef 枚举并避免类型混合警告

    我正在使用 C99 我的编译器是 IAR Embedded workbench 但我认为这个问题对于其他一些编译器也有效 我有一个 typedef 枚举 其中包含一些项目 并且我向该新类型的结构添加了一个元素 typedef enum fo
  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • Clang 3.1 + libc++ 编译错误

    我已经构建并安装了 在前缀下 alt LLVM Clang trunk 2012 年 4 月 23 日 在 Ubuntu 12 04 上成功使用 GCC 4 6 然后使用此 Clang 构建的 libc 当我想使用它时我必须同时提供 lc
  • 堆栈溢出:堆栈空间中重复的临时分配?

    struct MemBlock char mem 1024 MemBlock operator const MemBlock b const return MemBlock global void foo int step 0 if ste
  • 在 ASP.NET 5 中使用 DI 调用构造函数时解决依赖关系

    Web 上似乎充斥着如何在 ASP NET 5 中使用 DI 的示例 但没有一个示例显示如何调用构造函数并解决依赖关系 以下只是众多案例之一 http social technet microsoft com wiki contents a
  • 使用 Bearer Token 访问 IdentityServer4 上受保护的 API

    我试图寻找此问题的解决方案 但尚未找到正确的搜索文本 我的问题是 如何配置我的 IdentityServer 以便它也可以接受 授权带有 BearerTokens 的 Api 请求 我已经配置并运行了 IdentityServer4 我还在
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 什么时候虚拟继承是一个好的设计? [复制]

    这个问题在这里已经有答案了 EDIT3 请务必在回答之前清楚地了解我要问的内容 有 EDIT2 和很多评论 有 或曾经 有很多答案清楚地表明了对问题的误解 我知道这也是我的错 对此感到抱歉 嗨 我查看了有关虚拟继承的问题 class B p
  • 这些作业之间是否存在顺序点?

    以下代码中的两个赋值之间是否存在序列点 f f x 1 1 x 2 不 没有 在这种情况下 标准确实是含糊不清的 如果你想确认这一点 gcc 有这个非常酷的选项 Wsequence point在这种情况下 它会警告您该操作可能未定义
  • Windows 窗体:如果文本太长,请添加新行到标签

    我正在使用 C 有时 从网络服务返回的文本 我在标签中显示 太长 并且会在表单边缘被截断 如果标签不适合表单 是否有一种简单的方法可以在标签中添加换行符 Thanks 如果您将标签设置为autosize 它会随着您输入的任何文本自动增长 为
  • 通过指向其基址的指针删除 POD 对象是否安全?

    事实上 我正在考虑那些微不足道的可破坏物体 而不仅仅是POD http en wikipedia org wiki Plain old data structure 我不确定 POD 是否可以有基类 当我读到这个解释时is triviall
  • 如何将带有 IP 地址的连接字符串放入 web.config 文件中?

    我们当前在 web config 文件中使用以下连接字符串 add name DBConnectionString connectionString Data Source ourServer Initial Catalog ourDB P
  • C# 模拟VolumeMute按下

    我得到以下代码来模拟音量静音按键 DllImport coredll dll SetLastError true static extern void keybd event byte bVk byte bScan int dwFlags
  • IEnumreable 动态和 lambda

    我想在 a 上使用 lambda 表达式IEnumerable
  • 如何在文本框中插入图像

    有没有办法在文本框中插入图像 我正在开发一个聊天应用程序 我想用图标图像更改值 等 但我找不到如何在文本框中插入图像 Thanks 如果您使用 RichTextBox 进行聊天 请查看Paste http msdn microsoft co
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new

随机推荐

  • 使用 Firebase 和 S3

    我正在使用 firebase 和 ionic Angular JS 创建一个应用程序 我想知道是否可以使用 amazon s3 来托管照片 并将 url 来自 s3 存储在 firebase 中 并将其提供给用户 我想这样做 因为 fire
  • JavaScript 排序函数如何工作(作为一种算法)? [复制]

    这个问题在这里已经有答案了 JavaScript带参数的排序函数 http www javascriptkit com javatutors arraysort shtml允许传入一个函数 例如 var myarray 25 8 7 41
  • 如何在 Lucene 6 中对数字字段进行排序

    我想根据数字字段对搜索结果进行排序 在下面的示例代码中 我想根据 年龄 字段进行排序 我从使用以下答案开始 如何在 Lucene 6 中对 IntPont 或 LongPoint 字段进行排序 https stackoverflow com
  • 修改framework.jar中的java代码

    我手机上的库存 ROM 与 MVNO 移动虚拟网络运营商 存在问题 基本上这意味着我的数据连接仅在漫游时有效 这是一个已知问题 已在多个 ROM 上得到修复 但我的尚未修复 为了解决这个问题 我想修改framework jar文件的源 sy
  • 如何在 Xcode 5 中重命名项目?

    如何在 Xcode 5 中重命名项目 我需要采取什么步骤 在过去 这始终是一个非常棘手的手动过程 嗯 答案在 Xcode 5 中非常非常简单 在左侧的项目导航器中 缓慢单击 2 次 项目文件名将可编辑 输入新名称 将出现一个带有警告的表 并
  • maven zip uber-jar 和 shell 脚本

    我希望 Maven 能够将由 shade plugin 创建的 uber jar 和 all files 目录中的 shell 脚本结合起来 项目结构如下所示 all files mvn script sh projB shaded jar
  • 在MySql中加入DELETE?如何?

    我有这个 query DELETE FROM classified sql table WHERE classified ad id id AND classified classified id sql table classified
  • 如何在 SQLAlchemy 和 Firebird 中将 Python 列表绑定为自定义查询中的参数?

    环境 我使用 Firebird 数据库和 SQLAlchemy 作为 ORM 包装器 背景 我知道通过使用in 可以通过sales id列出在IN子句并得到结果 我有一个必须使用的用例文本sql Question 这是我的片段 conn e
  • 如何解决 macOS 中的 zsh: command not found: flutterfire 问题?

    我跟着document https firebase flutter dev docs overview using the flutterfire cli在我的 flutter 应用程序中添加 firebase 我收到 1 条警告和消息
  • 悬停时突出显示自定义 QWidgetAction

    我的应用程序有一个QMenuBar与一些QMenus 其中每个都有多个QActions 和子QMenus 大部分的QAction 项目是衍生品QWidgetAction并重新实施QWidgetAction createWidget方法 通常
  • 在 select 语句中使用命名元组

    有没有更好的方法使用 var 目标变量在 C 7 中选择命名元组 我一定是在示例 1 中做错了什么 或者完全误解了某些内容 我似乎必须显式设置目标类型才能执行此操作 1 Fails to compile with incorrect num
  • 如何获取订单密钥以在 WooCommerce 中创建自定义订单返回 url

    这是我用来获取自定义订单返回 URL 的代码 global woocommerce test order new WC Order order id test order key test order gt order key return
  • Scipy 对数范数拟合直方图

    我正在将对数正态 pdf 拟合到一些分箱数据 但我的曲线与数据不太匹配 请参见下图 我的代码是 import numpy as np import matplotlib pyplot as plt from scipy stats impo
  • 我可以在 Microchip C18 中创建一个同时接受 ram 和 rom 指针的函数吗?

    当我声明一个接受的函数时const char 我传递了一个字符串文字 我得到了一个 警告 2066 赋值中的类型限定符不匹配 因为字符串文字是rom const char 反过来也是一样的 虽然PIC是哈佛架构 但内存被映射到一个连续的地址
  • 如何将 Enum 绑定到 bit 或 int 的 DbType?

    我正在使用 Linq2Sql 并希望将对象字段 枚举 绑定到数据库中的 bit 或 int 类型 例如 我想在我的模型中有一个性别字段 我已经编辑了 DBML 并将类型更改为指向我的枚举 我想使用相同的想法为性别创建单选按钮 我想我已经弄清
  • 在 logback 中记录并行线程

    我将尝试对我的 Selenium 框架进行简要描述 以便我可以解释我的问题 I use 硒2 当前版本2 3 1 测试NG 5 14 我设置 testng xml 文件来并行运行测试套件中的测试 只有 2 个实例 出于记录目的 我使用log
  • Chrome 中忽略 window.open 宽度

    我想创建一个固定大小的弹出窗口 但是在 Chrome 中宽度属性被忽略 但在 FF 中工作正常 这是我的代码 window open width 300 生成的弹出窗口大于给定的宽度 有什么建议么 这似乎是 Chrome 中的一些奇怪的怪癖
  • 如何从 unicode 字符串中获取正确的元素?

    我想使用索引从 unicode 字符串中获取特定字母 但是 它并没有按预期工作 Example var handwriting 1234567890 var normal abcdefghijklmnopqrstuvwxyzABCDEFGH
  • 在shiny R中输入向量然后使用它

    在 Shiny R 中 我想要一种简单的方法来将向量作为 ui R 中的用户输入 然后想在 server R 中的函数中使用它 我是闪亮的新手 请帮忙 这里有一些简单的方法可以帮助您入门 祝您好运 请记住 下次发布一些代码 否则你肯定会被否
  • 创建像 ASP.NET MVC 3 ViewBag 这样的类?

    我有一种情况 我想做一些类似于 ASP NET MVC 3 ViewBag 对象所做的事情 其中 属性是在运行时创建的 或者是在编译时 无论如何 我想知道如何创建具有这种行为的对象 我创建了这样的东西 public class MyBag