Den*_*dic 12 .net c# nhibernate ilist readonly-collection
好的,所以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!
}
Run Code Online (Sandbox Code Playgroud)
方案如下:当项目添加到列表中时,我需要在我的类中有一些自定义逻辑,我想通过调用AddToList(someitem)来限制添加到此列表,同时不允许使用list.Add( someItem).问题是,我使用的NHibernate这需要IList接口,所以我不能投/呼吁的IList的AsReadOnly()(不包含此方法).
你会以什么方式来解决这种情况?我只需要一种方法让NHibernate以某种方式设置所需的集合,但我还需要限制用户.
Dan*_*rth 26
你可以模仿AsReadOnly():
public ReadOnlyCollection<Abc> List
{
get { return new ReadOnlyCollection<Abc>(list); }
}
Run Code Online (Sandbox Code Playgroud)
更新:
这不会创建副本list.ReadOnlyCollection不复制数据,它直接在提供的列表上工作.见文档:
只读集合只是一个带有包装器的集合,可以防止修改集合; 因此,如果对基础集合进行了更改,则只读集合会反映这些更改.
该构造函数是O(1)操作.
尝试
return new ReadOnlyCollection<Abc> (list);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9359 次 |
| 最近记录: |