提供以下课程:
public Person
{
public string Name {get; set;}
public string Age {get; set; }
}
如果我想然后返回一个IList,无论如何返回列表将是IList的所有功能但是删除了setter?可能使用扩展方法来删除setter。我想你会不得不使用反射,但这是唯一能做到这一点的方法吗?从速度/实施的角度来看是否可行。
我只是想知道如何做到这一点,它不是一个真正的设计。我知道只返回一个IEnumerable或IEnumerable,其中包含一个可以解决此问题的跳过或产量。
由于
答案 0 :(得分:5)
从Person类中删除了setter?创建
IReadonlyPerson
{
string Name { get; }
string Age { get; }
}
让Person实现它(它已经实现),然后返回一个IList。如果你在谈论IList的可变性,请看@ RPM1984的答案。
答案 1 :(得分:1)
为什么不返回ReadOnlyCollection?