据我所知,.NET 4.0仍然缺少只读列表.为什么框架仍然缺乏此功能?这不是域驱动设计中最常用的功能之一吗?
Java对C#的优势之一就是Collections.unmodifiablelist(list)方法的形式,它似乎早在IList <T>或List <T>中已经过期了.
使用IEnumerable<T>是问题的最简单的解决方案 - ToList可以使用并返回副本.
我怎样才能公开一个List<T>只读它,但可以私下设置?
这不起作用:
public List<string> myList {readonly get; private set; }
Run Code Online (Sandbox Code Playgroud)
即使你这样做:
public List<string> myList {get; private set; }
Run Code Online (Sandbox Code Playgroud)
你仍然可以这样做:
myList.Add("TEST"); //This should not be allowed
Run Code Online (Sandbox Code Playgroud)
我想你可以:
public List<string> myList {get{ return otherList;}}
private List<string> otherList {get;set;}
Run Code Online (Sandbox Code Playgroud)