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