从对象中删除访问器

时间:2010-11-01 22:11:16

标签: c#

提供以下课程:

public Person
{
 public string Name {get; set;}
 public string Age {get; set; }
}

如果我想然后返回一个IList,无论如何返回列表将是IList的所有功能但是删除了setter?可能使用扩展方法来删除setter。我想你会不得不使用反射,但这是唯一能做到这一点的方法吗?从速度/实施的角度来看是否可行。

我只是想知道如何做到这一点,它不是一个真正的设计。我知道只返回一个IEnumerable或IEnumerable,其中包含一个可以解决此问题的跳过或产量。

由于

2 个答案:

答案 0 :(得分:5)

从Person类中删除了setter?创建

IReadonlyPerson
{
  string Name { get; }
  string Age { get; }
}

让Person实现它(它已经实现),然后返回一个IList。如果你在谈论IList的可变性,请看@ RPM1984的答案。

答案 1 :(得分:1)

为什么不返回ReadOnlyCollection