मैं वास्तव में कुछ इस तरह की जरूरत है:मनुष्य और सेटर अलग इंटरफेस से आ रही
: जब मैंIReadableWritableVar.Value
उपयोग करने के लिए मैं, त्रुटियों संकलन मिल जब तक कि मैं स्पष्ट रूप से आधार इंटरफेस करने के लिए डाली यहाँ की तरह कोशिश
interface IReadableVar
{
object Value { get; }
}
interface IWritableVar
{
object Value { set; }
}
interface IReadableWritableVar : IReadableVar, IWritableVar
{
}
हालांकि
static void Main()
{
IReadableWritableVar var = null;
var t = var.Value; // <-- CS0229: Ambiguity between 'IReadableVar.Value' and 'IWritableVar.Value'
var.Value = null; // <-- CS0229: Ambiguity between 'IReadableVar.Value' and 'IWritableVar.Value'
var v = ((IReadableVar)var).Value; // compiles fine
((IWritableVar)var).Value = null; // compiles fine
}
मुझे इन त्रुटियों को क्यों प्राप्त होता है हालांकि सबकुछ संकलक को स्पष्ट होना चाहिए? कास्टिंग के अलावा इस समस्या को ठीक करने का कोई तरीका है (आवेदन में सैकड़ों स्थान)?
अपडेट: यह सुझाव दिया गया था कि यह Implementing 2 Interfaces with 'Same Name' Properties का डुप्लिकेट है लेकिन यह मामला थोड़ा अलग है क्योंकि इंटरफेस में कोई विरासत नहीं है। वैसे भी, समस्या अब हल हो गई है - स्वीकृत उत्तर देखें।
मुझे लगता है कि संकलक कि में नहीं बनाया गया है गेटटर या सेटर –
के आधार पर विभिन्न इंटरफेस में समान गुणों के बीच अंतर करने का तरीका [समान नाम 'गुणों के साथ 2 इंटरफेस लागू करना] का संभावित डुप्लिकेट (http://stackoverflow.com/questions/532148/implementing-2-interfaces-with- समान नाम-गुण) – PJvG
ध्यान दें कि 'IWritableVar' संदिग्ध है, क्योंकि केवल-लिखने वाले गुणों पर संदेह है। कोई भी कॉलर जो संपत्ति लिख सकता है, शायद इसे पढ़ने में भी सक्षम होना चाहिए, और जहां यह समझ में नहीं आता है, तो शायद आप एक विधि चाहते हैं, न कि संपत्ति। –