C# 中集合作为装饰器

2024-04-27

在设计集合基础设施时,我们遇到了一个非常“明显”的问题:假设您需要实现许多(子)类型的集合。其中一个方面是存储相关: list, array等等,而另一个是行为相关: ordered, 仅删除, 可观察到的(每次更改时都会触发一个事件)等。

显然(再次),需求直接映射到众所周知的装饰者设计模式 (list, array),其中与存储相关的方面将由多个行为(ordered, 可观察到的 etc).

很高兴知道有人已经实施了类似的东西。因此,如果可能的话 - 请推荐/参考任何维护良好的能够满足上述要求的第三方库。

到目前为止谢谢:)


我认为你误解了一些事情:

装饰器主要用于修改和添加行为在运行时。但是您引用的集合的属性需要可用在编译时。装饰器完全不适合向现有类添加更多方法。

While it is possible to decompose these traits of collections into interfaces (and indeed has been done 1)), this isn’t really what a decorator is about: a decorator wraps an existing class implementing the same interface. For collections, inheritance will make more sense (or may indeed be required) instead of composition.


1) A few years, I started developing my own such library, Containers.NET http://madrat.net/projects/containers/ but since preliminary benchmarks showed just how much faster the native .NET containers were, even though Containers.NET did not have any added overhead, I stopped the project before it got very far.

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

C# 中集合作为装饰器 的相关文章

  • 不允许从函数返回函数。我怎么能?

    8 3 5 8 Functions dcl fct says 函数的返回类型不得为 类型数组或function 尽管它们可能具有指针类型的返回类型或对此类事物的引用 为什么规则这么明确 是否有某种语法甚至允许返回函数而不是函数指针 我是否误
  • 如何让 CMake 为目标安装 PDB 文件

    如何让 CMake 安装调试 Visual Studio 生成的 DLL 文件和 EXE 文件所需的配套 PDB 文件 我已经挣扎了一段时间 试图找到这个问题的一个好的答案 我现在认为我找到了一个 使用安装文件命令
  • C# 中的密码恢复工具不起作用

    嗨 我对此还很陌生 我创建了一个门户 用户可以登录并在其中查看我制作的其他程序 问题是密码恢复似乎不起作用 我没有收到任何错误消息 我只是收到消息 我们无法访问您的信息 请重试 我已经正确设置了 ASP NET 配置 并使用不同的用户和权限
  • 改变 RGB 颜色的色调

    我正在尝试编写一个函数来改变 RGB 颜色的色调 具体来说 我在 iOS 应用程序中使用它 但数学是通用的 下图显示了 R G 和 B 值如何随色调变化 看起来 编写一个函数来改变色调似乎应该是一个相对简单的事情 而不需要对不同的颜色格式进
  • 为什么 C++ Concepts TS 中同时存在变量和函数概念?

    我一直在看 C 1zN4377 http www open std org jtc1 sc22 wg21 docs papers 2015 n4377 pdfGCC 6 中正在实现的概念 TS 草案 我不明白拥有两种不同概念的目的 变量概念
  • 我是否必须使用我的数据库训练 Viola-Jones 算法才能获得准确的结果?

    我尝试提取面部数据库的面部特征 但我认识到 Viola Jones 算法在两种情况下效果不佳 当我尝试单独检测眼睛时 当我尝试检测嘴巴时 运作不佳 检测图像的不同部分 例如眼睛或嘴巴 或者有时会检测到其中几个 这是不可能的情况 我使用的图像
  • 验证码怎么写?

    我正在开发一个注册表 我想放置验证码 我生成一个随机字符串 但如何将其转换为图像 否则我如何开发验证码或任何参考 谢谢 Try out 验证码 http recaptcha net plugins aspnet 或查看博客文章 使用 Asp
  • DPI 图形屏幕分辨率像素 WinForm PrintPageEventArgs

    对于运行我的应用程序的任何显示器 Dpi 点与像素有何关系 int points Screen primary public Form1 InitializeComponent points 1 primary null void OnPa
  • ReportViewer“缺少 URL 参数:名称”

    在一个网络应用程序中 我正在处理 ReportViewer 时不断出现错误 缺少 URL 参数 名称 我找到了原因 但没有找到解决方案 导致报告查看器出现异常的 url Reserved ReportViewerWebControl axd
  • Collection.Contains() 使用什么来检查现有对象?

    我有一个强类型的自定义对象列表 MyObject 它有一个属性Id 以及一些其他属性 假设Id of a MyObject将其定义为唯一 我想检查我的收藏是否还没有MyObject对象有一个Id在我添加新的之前 共 1 个MyObject到
  • C 中经过的时间

    include
  • 慢速 WPF 文本框

    我正在开发一个简单的串行数据查看器 它将用于观察传输到计算机串行端口之一的数据 我使用 C 和 WPF 编写了一个测试应用程序 它只是将最近读取的行放入文本块中 但是 它会跳过所有其他行 我的理论是 在 WPF 渲染窗口之前 新数据会被放入
  • 过滤两个类别的产品集合 Magento 1.7

    我想要获取包含 A 类或 B 类产品的产品集合 我已经能够使用以下 php 代码成功获取这些产品 collection Mage getModel catalog product gt getCollection gt joinField
  • 使用指针隐藏实现(Pimpl 惯用语)

    是否有可能实现以下目标 x hpp 该文件被许多其他类包含 class x impl forward declare class x public methods private x impl impl x cpp 实施 include
  • 在 C 或 C++ 中使用逗号作为宏名称

    我想做这样的事情 define define MAX 10 000 000 undef 有什么技巧可以做到吗 编辑 我知道 C 14 中的数字分隔符 我正在寻找一种技巧来对不兼容的编译器执行相同的操作 EDIT2 请考虑Variadic M
  • C memcpy 二维数组

    我正在尝试使用将一个二维数组复制到另一个memcpy 我的代码 include
  • 如何在 C# 中读取 Visio 文档内容

    我的DLL库代码如下 using System using IVisio Microsoft Office Interop Visio namespace Emix public class Visio protected String p
  • 从 Asp.Net Core 控制器返回 IAsyncEnumerable 和 NotFound

    返回一个控制器操作的正确签名是什么IAsyncEnumerable
  • 使用 JSON.NET 反序列化一些 JSON

    我对 JSON 非常陌生 我需要解析 API 提供的一些内容 谷歌快速搜索出现了JSON NET http james newtonking com pages json net aspx 所以我现在尝试使用它将此 JSON 解析为列表对象
  • win32 内容已更改,但除非移动窗口,否则不会显示更新

    我的 win32 GUI 内容每秒都会更改 但除非手动移动窗口 否则不会显示更新 我尝试每秒弹出一个消息框来触发窗口刷新 它成功了 因此 这证明我的内容确实发生了变化 但窗口没有更新 我希望刷新窗口而不是每次都弹出消息框 有没有这样的窗口功

随机推荐

  • Hadoop:处理大型序列化对象

    我正在开发一个应用程序来使用 Hadoop 框架处理 和合并 几个大型 java 序列化对象 顺序 GB 大小 Hadoop 存储将文件块分布在不同的主机上 但由于反序列化需要所有块都存在于单个主机上 因此它会极大地影响性能 我该如何处理这
  • 如何解析 iPhone 中本地存储的 XML 文件?

    如何解析 iPhone 中本地存储的 XML 文件 请使用代码片段帮我解决这个问题 我已经使用了 NSXMLParser 并且实现了它 我的资源中有 r xml 文件 我刚刚解析标题并使用 NSXMLParser 显示 r xml
  • 如何使弹性盒与需要截断文本的嵌套子项一起使用?

    要让 flex child 截断带有省略号的文本 可以给父级一个 min with 0 在我的项目中 子组件嵌套在几乎 10 个不同的弹性容器中 我是否需要给所有父母一个 min width 0 或者有更好的解决方法吗 sandbox ht
  • 呈现模型与被动视图

    我想知道上述两种模式之间的区别 当您考虑到您需要在表示模型模式中同步代码并且该代码位于表示模型本身中时 那么我认为这些模式非常相似 两者都将事件委托给演示模型 演示者 演示模型和演示者命令域模型 并且也观察域模型 当发生更改时 它们都与视图
  • 推送通知不会弹出带有入门套件的react-native-firebase

    我已经克隆了React Native Firebase 启动器 https github com invertase react native firebase starter并进行了初始设置 然后根据文档重命名项目 然后添加google
  • Clojure/Java:用于声音频谱分析的 Java 库? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个可以接受大量音频数据并返回给定频带内随时间变化的平均幅度的库 我已经在 comp dsp
  • 如何将某些视图的自旋转限制为单一方向,同时允许其他视图的所有方向?

    这个问题是关于 iOS 设备旋转和 UINavigationController 中的多个受控视图 有些观点应该是仅限于纵向方向 有些应该自由自转 如果您尝试使用三个视图创建最简单的设置 您会注意到自动旋转行为有一些非常令人讨厌的怪癖 然而
  • 无法读取 null 和其他 null 变量的属性“appendChild”

    在开始之前 我想让您知道我对 Web 开发还很陌生 我还想保留这个 100 javascript 所以现在没有 jquery 或其他语言 以下代码源自该视频 https www youtube com watch v esa5hJegRfI
  • 验证 hh:mm:ss

    我是 C net 的新手 我想要验证仅采用 hh mm ss 格式的文本框 下面是我的代码及其工作原理 它给出的输出为 true 23 45 45 仅作为示例 对于 23 45 45 也为 true 仅作为示例 现在我想要验证 23 45
  • Groovy == 运算符

    到目前为止 我的理解是 是一个运算符重载 equals 然而我最近发现 new Integer 1 new Long 1 returns true whereas new Integer 1 equals new Long 1 return
  • 为什么我的 akka 日志记录不能在游戏中运行

    我的日志记录在我的播放代码中工作正常 但我的 akka 代码没有记录到文件 标准输出 class EmailActor extends Actor with ActorLogging import EmailActor log info e
  • 删除 PHP 中的标头

    为了允许缓存 PHP 生成的文件 我想确保 Pragma no cache 标头是not放 但是 如何删除可能已经设置的标头 这就对了could有可能 有人在代码中的某个地方写了header Pragma no cache 现在我想确保标头
  • 从 ISO8601 持续时间到时间以及从时间到 ISO8601 持续时间的转换

    我有 ISO8601 格式的持续时间值 并将其转换为整数秒数的时间值 如下所示 ISO8601 格式的持续时间值 P1Y duration ISO8601 Duration new params duration to seconds du
  • 使用高斯混合模型进行皮肤检测

    我正在根据以下进行皮肤检测算法本文 http www cc gatech edu rehg Papers SkinDetect IJCV lowres pdf 第 21 页有两个模型 高斯皮肤混合模型和非皮肤颜色模型 第一个皮肤检测模型效果
  • 在 Visual Studio 中为“将 JSON 粘贴为类”配置类和成员名称大小写(lowerCamelCase 与 UpperCamelCase)

    考虑这个 JSON firstName John lastName Doe homeAddress streetAddress 123 Main St city Boston state MA postalCode 02110 employ
  • 我如何在soapUI中循环发出具有不同内容的请求? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个方法作为soapUI 中的请求 它将数据传输到在线平台 我有不同的变量 每次都有不同的竞争 有没有办法让我每次都用不同的内容循
  • 有没有办法将类实例定义为 None ?

    例如 当我有这样一个Node类定义 class Node def init self val None next None self val val self next next def bool self return self val
  • .NET C# - MigraDoc - 如何更改文档字符集?

    我已经寻找过这个问题的解决方案 但仍然找不到答案 任何帮助 将不胜感激 Document document new Document Section section document AddSection Paragraph paragra
  • c++03 初始化具有多个参数的对象数组

    这可能是一个简单的问题 但我正在尝试使用参数化构造函数初始化对象数组 例如 class A public int b c d A int i int j void A A int i int j d rand b 2 i c 3 j voi
  • C# 中集合作为装饰器

    在设计集合基础设施时 我们遇到了一个非常 明显 的问题 假设您需要实现许多 子 类型的集合 其中一个方面是存储相关 list array等等 而另一个是行为相关 ordered 仅删除 可观察到的 每次更改时都会触发一个事件 等 显然 再次