问题标签 [expando]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
746 浏览

python - 应用引擎 - 检查 Expando 类中是否存在属性

什么是检查属性是否填充在扩展类中的好方法(Python for App Engine)

我可不可以做:

或者这会给我一个错误?

谢谢!

0 投票
1 回答
492 浏览

groovy - groovy Expando:为什么它考虑局部变量而不是 expando 属性?

看这个测试代码:

为什么最后一个断言失败?它认为“a”是局部变量,而不是expando.a 属性。

感谢帮助

0 投票
2 回答
2087 浏览

dojo - dojo Expando 窗格内容在展开时隐藏


我有由一些按钮组成的 expandoPane。当我在项目中执行其他操作然后展开此 expandoPane 时,它​​的内容会被隐藏,并且在仅使用拆分器调整其大小后这些内容是可见的。

我想解决这个问题。你知道为什么内容不可见吗?

0 投票
2 回答
612 浏览

c# - 拦截动态属性访问器 .NET 4

这是一个有趣的问题(至少对我来说):是否可以拦截对象中的任意属性访问器(getter/setter),以便我可以将该请求重新路由到其他地方,例如私有成员对象?

如果我可以让它看起来好像我的外部对象自动可以访问调用者不知道的内部对象的某些内部属性(即除了少数例外的所有内容),我会喜欢它,实际上使外部对象“shell”对象的行为类似于内部对象,无需手动创建映射到每个内部对象属性的属性。

可能有一种模式,但我的猜测是它涉及手动将外部属性连接到内部属性。

0 投票
2 回答
3221 浏览

jquery - 为什么 JQuery 不公开它的 UUID 功能?

在底层,JQuery 使用“UUID”的映射(只是它维护的一个计数器jQuery.uuid)来解决浏览器在从 Javascript 将属性附加到 DOM 中的标记时出现的众所周知的内存泄漏问题。代替这样做,JQuery 使用$.data(tag, name, value)将数据存储在与 uuid 键控的映射中(可以通过检查来确定的键tag[jQuery.expando])。

虽然$.data()非常有用,但有时您希望将数据映射到标签而不将该数据转储到一个全局存储桶中 - 您需要自己的较小数据存储桶,例如,检查长度或循环。

作为一个人为的示例,假设您的图标在单击时会在 4 种状态之一中旋转。当一个处于状态 2 时,您希望将其添加到状态 2 的图标数组中。最明显的方法是将标签添加到数组中;但是这样做会造成内存泄漏。您可以调用$.data()复选框,但这并不能完全完成您想要做的事情 - 您必须遍历所有复选框,检查$.data()它们以确定哪些在列表中,哪些不在列表中。

您需要将标签的一些抽象存储在一个数组中,这就是 jQuery 的 UUID。您可以编写自己的 UUID 功能,但理想情况下,出于代码大小和质量原因,您只需利用 JQuery 已经内置的 UUID 功能。您可以要求 JQuery 通过调用隐式地将 UUID 附加到标签上$.data(tag, 'irrelevant', 1),然后检查tag[jQuery.expando]以获取其 UUID,最后在列表中使用它......但这有点小技巧。真正理想的是在公共 API 中公开以下内容:

$.getUuid(tag): 如果不存在 UUID,则检查并创建一个 UUID - 理想情况下,该方法被分解$.data()并创建或获取传入标签的 uuid。

那么,这是否有原因在 jQuery 中没有被考虑到它自己的方法中?这在某种程度上有害吗?它只是从来没有看起来有用的东西吗?

我应该注意,我实际上已经在我们使用的 jQuery 版本中考虑了它,它非常有帮助。但也许我在使用中没有遇到潜在的风险。我也知道有一个插件可以实现这一点,但它有点坏了——并且有 2 个代码路径来执行相同的 UUID 功能既有点浪费又有点脆弱。

0 投票
2 回答
926 浏览

c# - 将匿名类型反序列化为动态

我有一个应用程序,其中包含一个名为“任务”的业务实体。该实体具有一组固定的属性,但也具有扩展功能。

因此,它的架构如下所示:

当它存储在 RavenDB 中时,它看起来像这样

当然,当我尝试从 ANOTHER 程序查询此数据存储时,它会尝试查找包含 int 和 string 的匿名类型。另一个程序是最初保存文档的 EXE - 我不想引用这个。

提取动态属性的最佳方法是什么?我的目标是能够从 Raven 查询 Task 对象列表,并将它们传递给 Xaml 以在 UI 中呈现 - 这就是为什么数据绑定到 Expando 对我如此有吸引力,在编译时不需要知道这些属性。

我用这样的语句创建实例(存储在 Raven 中)

@Jacob:如果我使用字典,我会丢失有关动态属性的所有类型信息 - 但是,我可以这样做:

0 投票
2 回答
4464 浏览

c# - 如何转换字典到字典使用 Colllection.ToDictionary()

我正在使用 Dapper 将 2 列结果集提取到字典中。我注意到当我将鼠标悬停在结果集上时,intellisense 向我显示了一个 .ToDictionary() 但我无法让它工作,因为 dapper 使用动态属性/expandoObject

谢谢你

0 投票
4 回答
507 浏览

c# - 在您的架构中,如何将 url 与数据库层和业务对象层分离

背景

我们网站上有一些链接,其格式如下:

http://oursite.com/books/c_sharp_in_depth_12345

为了处理这个问题,我们使用了一个简单的属性,叫做Url

基本上,URL 来自我们网站的域、网站的一部分(即书籍)、页面名称和用于识别资源的唯一 ID。完整的 URL 存储在数据库中。

我们不喜欢我们的数据库存储部分名称的事实。这是 Web 图层属性的属性,而不是书籍的属性。数据库不应依赖于 web 层。

因此,我们从 URL 中删除该部分并获得以下内容:

好的,这适用于这个 URL。但是后来我们公司的 SEO 沙皇说我们的 URL 是错误的,而我们的真爱谷歌只有在我们像这样重写我们的 url 时才会爱我们:

http://oursite.com/programming-books/c-sharp-in-depth-12345

呃,哦,我以为我们已经删除了对web层的数据库依赖,但是我们没有。事实证明,我们已经删除了对该部分的依赖,但 URL 的格式仍然存在于数据库中。我们通过将 URL 抽象为一个对象来解决这个问题:

酷,现在对 web 层的依赖已经消失了。哦哦,这次我们的CEO来找我们了。我们刚买了一家新公司,现在我们卖杂志。嗯,很棒吗?杂志 URL 将如下所示:

http://oursite.com/magazines/computers/stack-overflow-the-magazine/2012/01/01/12345

好的,没问题,只需创建另一个对象。

它有效,但我开始意识到我们有一个大网站的计划。很多网址。许多不同格式的 URL。每次创建一个新类似乎都是一件令人头疼的事情。

简而言之问题

您如何处理 URL,以便 Web 层与业务层和数据层正确解耦?我想出了几个关于解决方案的想法:

有关问题的更多信息

我希望这有助于澄清一些困惑。

我们正在使用 ASP.Net MVC。我们使用路线。我们使用助手。我们将扁平化的 DTO 传递给我们的 Web 层,而不是业务对象。这个问题涉及服务层和 DTO 的爆炸式增长。

这主要是一个高流量的新闻网站,而不是一个行业网站。它可以有许多不同的网址,并且网址可以随时更改。它们可能很复杂,并且可以由管理层任意确定。

URL 示例(不是真实的,出于示例目的而编造)。

以上都是“文章”,我们有一个文章类。一篇文章有​​许多导航属性,例如 AuthorObject、RelatedLinksCollection 等。业务对象太重而无法传递给客户端,因此我们传递了扁平化信息的 DTO(例如 AuthorName)。然而,上述链接可能需要不同的信息,即使它们都是“文章”。

  1. 需要类别、子类别、标题和 ID
  2. 需要类别、子类别、政治类别、标题和 ID
  3. 需要类别、标题和 ID
  4. 需要类别、标题和 ID
  5. 需要类别、子类别、标题和 ID
  6. 需要 CEOCategory、CeoSubcategory、PublishedDate、Title 和 Id

在静态编程语言(例如 c#)中,通常的处理方法是创建单独的 DTO 类。您可以添加继承来减少一些代码,但您仍然会得到多个“文章”dto 类。

等等

以任何可能的方式编写自定义网址的能力不可协商。如果一篇文章与某事(状态、类别等)相关,它可以成为 url 的一部分。

解决方案?

  1. 根据需要继续添加Url对象。多少?至少有十几个,但命名它们会很麻烦。为每个业务对象做一个可以解决名称问题,但这意味着数十或数百个新对象。呸。

  2. IOC - 通过配置将路由模式传递给数据访问层。然后数据访问层可以创建一个完整的 url。url 模式名称仍然是一个问题。

  3. 使用Dictionary<TKey, TValue>,KeyValuePair<TKey, TValue>等来拉入。

  4. 使用ExpandoorDynamicObject作为 url 详细信息。因此 url 将包含几个基本属性(nameid),但必要时可以添加其他属性。

我正在考虑使用 4),因为动态编程似乎比静态语言做得更好。但是,可能只是我最看重它,因为我喜欢玩新玩具(我以前没有使用过expando)。

由于对象爆炸,它比 1) 更好。我不确定 2) 是否适用于复杂的场景。您可以使用 DI 将简单的路由名称 + 路由信息传递给数据层,但在没有额外收益的情况下似乎更难完成。它可能不适用于复杂的路线——为此,我认为您需要在 UI 端有一个规则引擎。

与 3) 相比,我认为 4) 稍微好一些。如果我弄错了,有人纠正我,但动态类型似乎只不过是字典顶部的语法糖,但具有更简洁的代码的优势。只是一个想法。

0 投票
1 回答
1429 浏览

automated-tests - Selenium 2.0 and findBy - Custom properties or Expando Properties

Anyone have a suggestion for finding elements on a page by a custom property, like an expando property?

Problem: Site uses alot of JSP and dynamic images for buttons. They do not have static names or IDs. (Think of a registration or checkout process where every page has a "next" or "continue" button, but it dynamically takes you somewhere depending upon current context)

Suggested Solution: My repeated requests that these are not automate-able have recently been answered with a custom expando property of "btn-tag-title".

If every element on a page has a unique (but custom) property named btn-tag-title=, can selenium 2.0 find it reliable every time?

Other Suggested Solutions?

0 投票
2 回答
1645 浏览

grails - Grails:println 仅在某些时候有效

我制作了一个全新的 grails 项目并将其放入引导程序中:

它符合我的预期,运行应用程序打印:

但是,如果我取出println "rofl"它,它将不会打印第二个。它只打印一个没有 rofl 的 1 ... WTF?

同样,因为这对我没有任何意义,这段代码:

印刷: