Có cách nào để trả về một thể hiện chỉ đọc của một đối tượng không?C# đối tượng chỉ đọc
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!
}
}
Cách duy nhất để thực hiện điều này bằng cách trả về bản sao() sao cho mọi thay đổi được thực hiện cho bản sao chứ không phải bản gốc? Tôi biết đối với mảng có một hàm để trả về mảng là chỉ đọc. Oh, và tôi biết đây là một kiểu tham chiếu ... Tôi còn tự hỏi liệu có một số tính năng C# ẩn để khóa phần viết không.
Tôi đã cố gắng để đưa ra một lớp trình bao bọc chung ReadOnly, nhưng không thể tìm ra cách để có được các thuộc tính như chỉ đọc mà không làm một số phản ánh tốn kém và như vậy.
Ồ, và tôi thực sự đang cố gắng tránh tạo phiên bản thứ hai của lớp đó là tất cả các thuộc tính chỉ đọc. Tại thời điểm đó, tôi cũng có thể trả lại bản sao.
Căn cứ ý kiến: Có bất kỳ nổi tiếng "ReadOnly" class generic wrapper mà là nhanh chóng và hiệu quả? Người mà tôi đã cố gắng tạo ra phải sử dụng sự phản chiếu, điều đó không thực sự là điều tôi muốn làm nếu tôi có thể tránh được nó. –