क्या किसी ऑब्जेक्ट के रीडोनली इंस्टेंस को वापस करने का कोई तरीका है?सी # रीडोनली ऑब्जेक्ट
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!
}
}
एक क्लोन() लौट रहे ताकि किसी भी परिवर्तन और क्लोन करने के लिए किया नहीं कर रहे हैं मूल से यह करने के लिए एक ही रास्ता है? मैं Arrays के लिए जानता हूँ वहाँ केवल पढ़ने के रूप में ऐरे वापस करने के लिए एक समारोह है। ओह, और मुझे पता है कि यह एक संदर्भ प्रकार है ... मैं सोच रहा हूं कि लेखन भाग को लॉक करने के लिए कुछ छुपा सी # सुविधा है या नहीं।
मैं जेनेरिक रीडऑनली रैपर क्लास के साथ आने की कोशिश कर रहा था, लेकिन कुछ महंगे प्रतिबिंब और इस तरह के बिना गुणों को आसानी से प्राप्त करने के तरीके को समझ नहीं पाया।
ओह, और मैं वास्तव में कक्षा के दूसरे संस्करण को बनाने से बचने की कोशिश कर रहा हूं जो सभी पाठक गुण हैं। उस समय, मैं क्लोन वापस भी कर सकता हूं।
टिप्पणियों के आधार पर: बूलियन (IsReadOnly) अपडेट रोकने के लिए उचित तरीके से किया जाता है वहाँ किसी भी ज्ञात "ReadOnly" सामान्य आवरण वर्ग तेज है कि है और कुशल? जिसने मुझे बनाने की कोशिश की थी वह प्रतिबिंब का उपयोग करना था, जो वास्तव में मैं नहीं करना चाहता हूं अगर मैं इससे बच सकूं। –