2009-07-21 13 views
9

मैं सी # के लिए नया नहीं हूं, लेकिन मुझे एक ऐसा व्यवहार मिला है जो थोड़ा परेशान है।कार्यान्वयन इंटरफेस सी #

मैं एक अंतरफलक

public interface IApplicationPage 
{ 
    Person ThePerson { get; set; } 
    Application Application { get; set; } 
} 

है मैं एक पेज

public partial class tripapplication2 : System.Web.UI.Page, IApplicationPage 
{ 
    Person IApplicationPage.ThePerson { get; set; } 
    Application IApplicationPage.IApplicationPage.Application { get; set; } 
} 

हालांकि पर इंटरफ़ेस को लागू है, जब मैं स्वयं पृष्ठ मैं हुप्स के माध्यम से कूद करने की जरूरत है ThePerson संदर्भित करने के लिए प्रयास करते हैं। उदाहरण के लिए।

1) ThePerson.Birthday

कह एक त्रुटि देता है "नाम 'ThePerson' वर्तमान संदर्भ में मौजूद नहीं है।"

2) ((IMissionTripApplicationPage) इस) .ThePerson.Birthday

यह काम करता है, लेकिन यह भयानक लग रहा है।

क्या लागू गुणों का संदर्भ देने का कोई बेहतर तरीका है?

+0

आप विशिष्ट कोड वह काम नहीं करता दिखा सकते हैं निकालना चाहते हैं? –

उत्तर

23

ऐसा लगता है कि आपने अपने नमूने में एक लाइन छोड़ी है। मेरा मानना ​​है कि कार्यान्वयन में ThePerson लाइन पढ़ना चाहिए

Person IApplicationPage.ThePerson { get; set; } 

कार्यान्वयन इस प्रकार का एक स्पष्ट इंटरफेस कार्यान्वयन के रूप में जाना जाता है। इसका अर्थ यह है कि जब सदस्य इंटरफ़ेस प्रकार के संदर्भ के माध्यम से ऑब्जेक्ट देखा जाता है तो सदस्य केवल देखने योग्य होगा।

आप सदस्य एक ठोस प्रकार संदर्भ के माध्यम से उसे देखा नहीं जा चाहते हैं, इसे सार्वजनिक करने और स्पष्ट कार्यान्वयन

public Person ThePerson { get; set; } 
+2

+1 अच्छा स्पष्टीकरण –

+1

बिल्कुल सही, मैंने लाइन छोड़ दी! (लापरवाही प्रतिलिपि)। धन्यवाद जेरेड। – Daniel

2

उन्हें सार्वजनिक गुण के रूप में लागू:

public partial class tripapplication2 : System.Web.UI.Page, IApplicationPage 
{ 
    public Person ThePerson { get; set; } 
    public Application IApplicationPage.Application { get; set; } 
} 

संपादित

प्रश्न अब दिखाने के लिए इन स्पष्ट मूल रूप में लागू किया गया संपादित। इसलिए, मुझे संपत्तियों के स्पष्ट कार्यान्वयन के बजाए उन्हें सार्वजनिक रूप से लागू करने के रूप में अपनाया जाना चाहिए।

+0

आप स्पष्ट कार्यान्वयन सार्वजनिक नहीं कर सकते (एप्लिकेशन IAplicationPage.Aplication स्पष्ट है!) – mmmmmmmm

+0

जब मैंने उत्तर दिया तो यह स्पष्ट नहीं था। बेशक काफी सही है। –

संबंधित मुद्दे