2013-01-08 8 views
8

मैं गुणों के साथ एक अंतरफलक है संकलक त्रुटि बाहर पॉप:कार्यान्वित उपयोग नहीं कर सकते संपत्ति (इंटरफ़ेस से)

void IEntityModifier.Update(IEntity pEntity, Microsoft.Xna.Framework.GameTime pGameTime) 
    { 
     if (!this.mFinished) 
     { 
      this.Value += this.Delta * (float)pGameTime.ElapsedGameTime.TotalSeconds; 

      if (this.Value >= this.Max) 
      { 
       this.Value = this.Max; 
       this.mFinished = true; 
       if (this.AutoDetachOnFinished) { /* Error Here */ } 
      } 
     } 
    } 

त्रुटि संदेश:

14 'MEngine.Entities.EntityModifier.SingleValueEntityModifier' 'AutoDetachOnFinished' के लिए एक परिभाषा और कोई विस्तार विधि शामिल नहीं है 'AutoDetachOnFinished' प्रकार के पहले तर्क को स्वीकार करने 'MEngine.Entities.EntityModifier.SingleValueEntityModifier' कर सकता है जा पाया (आप एक का उपयोग कर के निर्देश या एक विधानसभा संदर्भ याद कर रहे हैं?)

2 प्रश्न हैं:

  1. संकलक शिकायत क्यों करता है अगर मैं IEntityModifier. एस हटा देता हूं (इसलिए IEntityModifier.UpdateUpdate बन जाएगा, किसी भी लागू विधि पर लागू होगा)?
  2. मैं AutoDetachOnFinished क्यों नहीं पहुंच सकता?

उत्तर

12

आप explicit interface implementations के रूप में इन लागू कर दिया है, जिसका अर्थ है कि आप उन्हें केवल इंटरफ़ेस प्रकार की एक चर के माध्यम से उपयोग कर सकते हैं - IEntityModifier

या तो उस कार्य करें:

if (((IEntityModifier)this).AutoDetachOnFinished) 

या कार्यान्वयन से इंटरफ़ेस नाम हटा दें:

bool AutoDetachOnFinished { get; set; } 
bool Finished { get { return this.mFinished; } } 
2

क्योंकि आप इंटरफ़ेस स्पष्ट रूप से कार्यान्वित कर रहे हैं।

bool IEntityModifier.AutoDetachOnFinished { get; set; } 

आपको स्पष्ट कार्यान्वयन तक पहुंचने के लिए इंटरफेस में डालना होगा। शायद आप जो चाहते हैं नहीं। तो कार्यान्वयन

bool AutoDetachOnFinished { get; set; } 
1

Convert प्रकार IEntityModifier की वस्तु के रूप में आप स्पष्ट इंटरफेस कार्यान्वयन कर रहे हैं this.AutoDetachOnFinished से अंतरफलक नाम को हटा दें। here some explanation.

IEntityModifier entitymodifier=(IEntityModifier)objectInstanceOfimplementedClass; 

    if(entitymodifier.AutoDetachOnFinished) 
संबंधित मुद्दे