द्वारा कहा जा रहा एक कक्षा में एक विशेष विधि केवल एक विशेष वर्ग द्वारा सुलभ होना चाहता हूँ। उदाहरण के लिए:सीमा विधि केवल एक विशेष वर्ग
public class A
{
public void LimitedAccess() {}
public void FullAccess() {}
}
public class B
{
public void Func()
{
A a = new A();
a.LimitedAccess(); // want to be able to call this only from class B
}
}
public class C
{
public void Func()
{
A a = new A();
a.FullAccess(); // want to be able to call this method
a.LimitedAccess(); // but want this to fail compile
}
}
क्या कोई ऐसा कीवर्ड या विशेषता है जिसका उपयोग मैं इसे लागू करने के लिए कर सकता हूं?
अद्यतन: कारण मौजूदा प्रणाली जटिलता और समय की कमी के
, मैं एक कम प्रभाव समाधान की जरूरत है। और मैं कुछ संकलित समय पर इंगित करना चाहता था कि LimitedAccess() का उपयोग नहीं किया जा सका। मुझे जॉन स्कीट के जवाब पर भरोसा है कि मैंने जो कुछ पूछा था वह सी # में नहीं किया जा सका।
सवाल और जॉन की जवाब जो लोग इस भर में बाद में चला सकते हैं के लिए अच्छे हैं। और तथ्य यह है कि यह डिज़ाइन गंध करता है उम्मीद है कि किसी को वांछित समाधान के रूप में ऐसा कुछ चुनने के लिए किसी को भी दूर कर दें।
एक टिप्पणी में उल्लेख किया है, C# friend बातचीत उपयोगी पढ़ने अगर आप एक ऐसी ही स्थिति को सुलझाने की कोशिश कर रहे हैं।
मेरी विशेष समाधान के लिए के रूप में: "क्यों एक बी के तर्क होता हैं," (टिप्पणी में @sysexpand द्वारा पूछे जाने पर)। वह रगड़ है। B.Func()
को पूरे सिस्टम में बुलाया गया था जिस पर मैं काम कर रहा हूं, लेकिन यह मुख्य रूप से A
के सिंगलटन पर संचालित होता है। तो मैं क्या कर रहा था B
Func()
A
में A.LimitedAccess()
निजी बना रहा था। आसपास के काम करने के लिए कुछ अन्य विवरण थे, जैसा कि हमेशा होता है, लेकिन मुझे कम प्रभाव समाधान मिला जिसने मुझे कॉलर्स पर A.LimitedAccess()
पर संकलन-समय त्रुटियां दीं।
चर्चा के लिए धन्यवाद।
आप ऐसा क्यों करना चाहते हैं? –
मेरे पास एक बड़ी कक्षा 'ए' है जिसका उपयोग पूरे सिस्टम में बड़े पैमाने पर किया जाता है। कक्षा 'बी 'में अन्य निर्भरताएं हैं लेकिन बीएलमिटेडएप() का उपयोग करने का मानक/सर्वोत्तम तरीका है। जब भी संभव हो मैं 'B.Func()' का उपयोग करके लागू करना चाहता हूं। – jltrem
देखें http://stackoverflow.com/questions/203616/why-does-c-sharp-not-provide-the-c-style-friend-keyword आपको 'LimitedAccess' को आंतरिक के रूप में चिह्नित करना चाहिए और कोड के माध्यम से इसका दुरुपयोग करना चाहिए समीक्षा। – Yaur