好的,所以 List 包含 AsReadOnly(),它为您提供 ReadOnlyCollection。我需要的是有一个 IList 类型的字段,以及一个将返回该列表的 ReadOnlyCollection 的属性。示例类:class Test{ private IList<Abc> list; public AddToList(Abc someItem) { /* adds inside the list */... } public ReadOnlyCollection<Abc> List { get { return ??? } } // <- no "set" here!}场景如下:当项目被添加到列表中时,我需要在我的类中有一些自定义逻辑,我想通过调用 AddToList(someitem) 来限制添加到这个列表,同时不允许使用 list.Add(某项)。问题是我使用 NHibernate 其中 需要 IList 接口(interface) ,所以 IOn 不能包含 IOnList 方法(它不包含 IOn 转换/调用)。你会推荐什么方法来解决这种情况?我只需要一种方法让 NHibernate 以某种方式设置所需的集合,但我还需要限制用户。 最佳答案 你可以模拟 AsReadOnly() :public ReadOnlyCollection<Abc> List{ get { return new ReadOnlyCollection<Abc>(list); }} 更新 :这不会创建 list 的副本。 ReadOnlyCollection 不复制数据,它直接在提供的列表上工作。见 documentation : A collection that is read-only is simply a collection with a wrapper that prevents modifying the collection; therefore, if changes are made to the underlying collection, the read-only collection reflects those changes. This constructor is an O(1) operation.关于c# - 从 IList<> 返回 ReadOnlyCollection,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7227611/
10-13 01:22