कर्मचारी, प्रबंधक, और सहायक वर्गों पर विचार से एक प्रॉपर्टी को दबाने:नेट विरासत: आधार वर्ग
public class Emp
{
public string Name { get; set; }
public Manager Manager { get; set; }
public Assistant Assistant { get; set; }
}
public class Manager : Emp
{
}
public class Assistant : Emp
{
}
लक्ष्य इस तरह एक संपत्ति का उपयोग करने के कोड का एक टुकड़ा अस्वीकृत करने के लिए है:
Emp
से
var foo = new Manager();
var elmo = new Emp();
elmo.Manager = foo;
elmo.Manager.Manager = new Manager();
//how to disallow access to Manager.Manager ?
क्योंकि Manager
इनहेरिट करती है, यह एक .Manager
और .Assistant
संपत्ति है।
प्रश्न
वहाँ नेट के उत्तराधिकार कार्यान्वयन में किसी भी संशोधक .Manager
और .Assistant
गुण दूर करने के लिए कर रहे हैं?
अद्यतन
अपने महान जवाब, हर किसी के लिए धन्यवाद। मैं उम्मीद कर रहा था कि एएमपी/एमजीआर के सरलीकरण और प्रतिद्वंद्विता इस प्रश्न में दिखाई देगी। यह स्पष्ट है कि विरासत, इस उदाहरण में, एक और समानता के लिए (कुछ Person
की तरह, आदि जहां कक्षाएं नाम, birthdates का हिस्सा होता है) से लिया जाना चाहिए आपका इनपुट बहुत सराहना कर रहा है!
मुझे एक डिजाइन मुद्दे की तरह बदबू आ रही है। जबकि प्रबंधक किसी अन्य प्रबंधक को रिपोर्ट कर सकते हैं, सहायकों के पास शायद सहायक नहीं है। शायद आधार व्यक्ति होना चाहिए ... – Walter