我有以下课程:
public class PeopleInfo
{
public virtual int ID {get; protected set;}
public virtual Person Person1 {get;set;}
public virtual Person Person2 {get;set;}
public virtual List<Person> People
{
get
{
var p = new List<Person>();
p.Add(Person1);
p.Add(Person2);
return p;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用NHibernate.所述Person类被用作一个部件,因为"PeopleInfo"表具有多于1人的每一行英寸 People()属性背后的想法是提供一个可以循环的只读列表.有没有更好的方法来做到这一点,或者这个解决方案是否可以接受?
Eri*_*ert 11
People属性背后的想法是提供一个可以循环的只读列表.有没有更好的方法来做到这一点,或者这个解决方案是否可以接受?
如果这是你的意图那么你还没有实现它; 你提供了一个可以循环的可变列表.
幸运的是,每次都提供不同的可变列表,但您仍然提供可变列表.
我倾向于实际提供一个不可变的列表.有很多方法可以做到这一点.如果您实际提供了一个不可变列表,那么您还可以获得额外的好处,即可以懒惰地计算列表,然后无限期地缓存和重新使用,而不是每次请求时重新构建.
如果您需要索引访问,那么我将创建一个ReadOnlyCollection并将其包装在列表的单个实例周围,然后缓存并重新使用只读集合.请注意,如果您改变基础列表,则只读集合将显示为mutate; 它只是一个只读列表,它不是一个不可变列表.
如果您不需要索引访问,那么我会通过返回IEnumerable<T>而不是表示List<T>.然后,您可以返回您选择的任何不可变集合.
| 归档时间: |
|
| 查看次数: |
356 次 |
| 最近记录: |