Есть ли способ вернуть экземпляр только для чтения объекта?
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, а не с оригиналом? Я знаю, что для массивов существует функция возврата массива как доступная только для чтения. О, и я знаю, что это ссылочный тип... Я, кроме того, задаюсь вопросом, есть ли какая-то скрытая функция С# для блокировки записи.
Я пытался создать общий класс оболочки ReadOnly, но не мог понять, как получить свойства как readonly, не делая дорогого отражения и такого.
О, и я действительно пытаюсь избежать создания второй версии класса, которая является всеми свойствами readonly. В этот момент я мог бы также вернуть клон.