在試圖集中如何添加項目或從業務實體類中移除項目時,我已將模型移至所有列表僅顯示爲ReadOnlyCollections的模型,並提供了Add和Remove方法來操作列表中的對象。業務實體 - 應將列表僅暴露爲ReadOnlyCollections?
下面是一個例子:
public class Course
{
public string Name{get; set;}
}
public class Student
{
private List<Course>_courses = new List<Course>();
public string Name{get; set;}
public ReadOnlyCollection<Course> Courses {
get{ return _courses.AsReadOnly();}
}
public void Add(Course course)
{
if (course != null && _courses.Count <= 3)
{
_courses.Add(course);
}
}
public bool Remove(Course course)
{
bool removed = false;
if (course != null && _courses.Count <= 3)
{
removed = _courses.Remove(course);
}
return removed;
}
}
我在做上述是爲了不與貧血數據模型(反模式)結束,並且還避免其將所述邏輯目標的一部分和刪除所有地方的課程。
一些背景:我正在使用的應用程序是一個Asp.net應用程序,其中的列表曾經作爲列表公開,這導致了各種方式將課程添加到學生(有些地方支票已經支付,其他支票未支付)。
但我的問題是:以上是一個好主意嗎?
我通常公開IEnumerable <>而不是ReadOnlyCollection,因爲Count()等在運行時類型上進行了優化,無論如何都沒有顯着的性能損失。 – 2011-03-23 22:18:45