有没有办法返回一个对象的只读实例?
public class Person
{
public String FirstName { get; set; }
public String LastName { get; set; }
}
public class SomeClass
{
public SomeClass(Person manager)
{
if (manager == null)
throw new ArgumentNullException("manager");
_manager = manager;
}
private readonly Person _manager;
public Person Manager
{
get { return _manager; } //How do I make it readonly period!
}
}
这个问题的唯一解决方法是返回一个Clone(),以便对Clone进行任何更改而不影响原始对象。我知道对于数组,有一个函数可以将其作为只读返回。噢,我知道这是一个引用类型……我更想知道是否有一些隐藏的C#功能来锁定写入部分。我试图想出一个通用的ReadOnly包装类,但无法在不进行一些昂贵的反射等操作的情况下将属性设置为只读。噢,我真的很想避免创建第二个所有属性都是只读的版本的类。此时,我不如返回Clone。