问题标签 [readonly-collection]

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 投票
1 回答
356 浏览

c# - ReadOnlyCollection 项目的扩展方法

我有一个自定义接口类型 (IMyInterface) 的 ReadOnlyCollection。我想向自定义接口类型添加扩展方法。但是,当我访问 ReadOnlyCollection 中的项目时,我的扩展方法没有显示。这是我的代码:

当我尝试通过执行类似的操作来访问它时,

扩展方法未显示在 MyMethod[0] (在 Visual Studio 中)之后的可用弹出窗口中,这意味着它不可用。我可能会错过什么?是否可以为 ReadOnlyCollection 中的项目添加扩展方法?

0 投票
2 回答
1584 浏览

c# - 返回一个 ICollection作为 IReadOnlyCollection?

我有一个类型的字段ICollection<T>。有没有简单的方法让它只读?

请注意,ReadOnlyCollection<T>该类需要一个IList<T>,我正在寻找一种方法来反转一个ICollection<T>并确保用户不能更改集合。

使用AsEnumerable前。方法,不能保证,因为它可以被转换回它的原始类型,也可以是List.

0 投票
1 回答
183 浏览

.net - 公开 IList或 ReadOnlyCollection只读属性?

我意识到,自从 .NET 4.5 以来,ReadOnlyCollection<T>该类实现了新接口IReadOnlyCollection<T>,但我受限于没有这个的旧版本的库。

我想知道哪个更好被认为是最佳实践:

0 投票
1 回答
1179 浏览

c# - Best way to create a complete readOnly list of object

I'm using C# 4.0, Asp.Net. I have a problem regarding the proper construction of a readonly structure within a custom cache I created.

Details (summary) :
My CacheManager class (singleton) uses, as parameter, an instance of the existing MemoryCache class and wraps around a few helpful methods to deal with supplementary stuff such as object life cycle within my custom cache.

That Manager deals with a simple CachableObject that takes three variables :

  • object
  • DateTime
  • int (duration)

In summary, my custom cache Manager stores objects for a limited amount of time in order to protect my database from frequent big queries.

Lately, I tried to :

  • Got back an object from the cache (ie : stored under the key -MyList)
  • Casted it back to a list of complexe objects
  • Translated the content of some properties for each complexe objects
  • Stored again the freshly translated list of objects within the cache, (under another key -MyTranslatedList)

The problem :
During my testing, it appeared to me that both lists stored in the cache (raw and translated one) were refering to the same underlying objects. Therefore, once translated, those objects were actually translated in both lists.
Since each list only has references to the objects, that's a perfectly normal behavior and a silly mistake from me.

The question :
As you can easily guess now, I would like to protect myself and other users of my singleton for that kind of mistakes.

I would like to insert (or store or get) any kind of object (or list of complexe objects) so they cannot be altered by anybody getting them through the cache. I would like the data within my cache to be readonly (and deeply readonly) to avoid having that kind of problem. I want anybody to have to create a deep copy (or even better, to get one) before starting to use the data stored within the cache.

What I tried so far :
I tried to make the object readonly. It didn't work as expected.

Since I'm often storing list of complexe objects, I've found the AsReadOnly method that return a IReadOnlyCollection, but while this prevents me from altering the list (add, remove) it doesn't protect the objects that are within the list.

I hope my explanation is somewhat understandable :) Is there a neat way of dealing with that kind of situation ?

0 投票
2 回答
7325 浏览

c# - 在 C# 中创建一个只读列表

我有这个示例代码。我想要做的是使“Nums”值只能使用“AddNum”方法写入。

不知何故,我已经尝试了很多关于 AsReadOnly() 和 readonly 关键字的事情,但我似乎无法让它做我想做的事情。

这是我必须访问该属性的代码示例。

我真的希望“访问 1”失败,而“访问 2”是可以设置值的唯一方法。在此先感谢您的帮助。

0 投票
1 回答
215 浏览

python - readOnlycollection 的 .Item 属性不起作用

我使用 CPython3.4 在 Python 中制作一个项目。我导入了一个包含 ReadOnlyCollection 的 dll。如何从该列表中获取一项(在索引处)?我已经尝试使用 .Item(index) 和 .Items 但它说:

“该对象没有属性“项目”

但是当我使用 .Count 时,它确实给了我计数。文档说我可以在这个对象上使用两者。https://msdn.microsoft.com/en-us/library/ms132474(v=vs.110).aspx该dll是用VB.net编写的。

有人可以帮我从 ReadOnlyCollection 中取出一项吗?

0 投票
3 回答
1525 浏览

c# - 只读列表>

如果我们有 field List<Dictionary<>>,如何将其公开为只读属性?

例如:

我可以这样暴露

但仍然可以更改目录:

这是将其设为只读的尝试

我认为这种方法的问题是显而易见的:它是一个新字典的新列表。

我想要的是类似于List<>.AsReadOnly()的东西,让属性充当_list.

0 投票
5 回答
1256 浏览

c# - 没有添加的公开列表

我希望RegisterObjects可以从课堂之外访问它,而且填充RegisterObjects列表的唯一方法是通过TryRegisterObject(object o).

这可能吗 ?

0 投票
2 回答
142 浏览

c# - 更新 GridView 中的 ReadOnlyCollection

我正在尝试修改另一位先生编写的一些代码,这些代码生成各种格式的平面文件。所讨论的特定平面文件是一个位置定义的文件 - 值 X 位于位置 10,值 Y 位于 17,值 Z 位于 26,等等。

当用户单击“创建文件”按钮时,将调用此提取:

此时,我知道我有这个名为 dataRows 的 ReadOnlyCollection。它是从以下例程中的存储过程“GetMerrillLynchData”填充的:

ReadOnlyCollection 将被提供给 FlatFileGenerator,它将输出格式正确的文件。

问题:我们的薪资管理员希望能够在将该文件通过 FTP 传送到美林证券之前对其进行编辑。我想知道是否可以在将数据发送到 FlatFileGenerator 之前打开和编辑 dataRows(可能在 GridView 中?)。然后在她完成编辑后,我想将她的编辑保存回 dataRows 并继续编写代码。

这可以做到吗?

0 投票
3 回答
4233 浏览

c# - ReadonlyCollection,对象是不可变的吗?

我正在尝试使用 ReadOnlyCollection 使对象不可变,我希望对象的属性是不可变的。

但我有点困惑。

我尝试使用 foreach 将对象的属性更改为 MyReadOnlyList 并且...我可以更改 value 属性,是否正确?我了解 ReadOnlyCollection 设置了一个添加级别以使对象不可变。