संक्षेप में, आप, कोड को तोड़ने के बिना है कि इंटरफ़ेस परिवर्तित नहीं कर सकते क्योंकि सी # कर सकते हैं इंटरफेस में नहीं प्रकार घोंसला। ,
class TestClass3 : TestInterfaces.MyInterface
{
TestInterfaces.MyInterface.MyEnum TestInterfaces.MyInterface.Number
{
get { throw new Exception("The method or operation is not implemented."); }
}
}
लेकिन जब से सी # नहीं इंटरफेस के अंदर घोंसला प्रकार, यदि आप प्रगणक से बाहर तोड़ कर सकते हैं: आप VB.NET संस्करणों के इंटरफ़ेस को लागू करते हैं, तो आप को निर्दिष्ट है कि संख्या MyInterface.MyEnum का एक प्रकार वापस आ जाएगी रहे हैं इंटरफ़ेस, आप एक अलग डेटा प्रकार वापस कर देंगे: इस मामले में, MyEnum।
class TestClass2 : IMyInterface
{
MyEnum IMyInterface.Number
{
get { throw new Exception("The method or operation is not implemented."); }
}
}
पूरी तरह से योग्य प्रकार के नाम का उपयोग करने के बारे में सोचें। VB.NET इंटरफ़ेस में, आप
MyProject.MyInterface.MyEnum
की वापसी प्रकार सी # इंटरफ़ेस में है, तो आप के लिए है:
MyProject.MyEnum।
दुर्भाग्य से, कोड जो VB.NET इंटरफ़ेस को लागू करता है उसे इस तथ्य का समर्थन करने के लिए बदला जाना चाहिए कि MyInterface.Number द्वारा लौटाया गया प्रकार बदल गया है।
आईएल इंटरफेस के अंदर नेस्टिंग प्रकार का समर्थन करता है, इसलिए यह एक रहस्य है क्यों सी # नहीं करता है:
.class public interface abstract auto ansi MyInterface
{ .property उदाहरण ValueType TestInterfaces.MyInterface/MyEnum संख्या { .Get उदाहरण ValueType TestInterfaces.MyInterface/MyEnum TestInterfaces.MyInterface :: get_Number() }
.class auto ansi sealed nested public MyEnum
extends [mscorlib]System.Enum
{ .field सार्वजनिक स्थिर शाब्दिक va luetype TestInterfaces.MyInterface/MyEnum शायद = int32 (2)
.field public static literal valuetype TestInterfaces.MyInterface/MyEnum No = int32(1)
.field public specialname rtspecialname int32 value__
.field public static literal valuetype TestInterfaces.MyInterface/MyEnum Yes = int32(0)
}
}
आपको लगता है कि इस इंटरफेस का उपयोग करने के अन्य विधानसभाओं में कोड के बहुत सारे है, तो आपका सर्वश्रेष्ठ दांव यह एक अलग अंदर रखने के लिए है वीबीएनईटी असेंबली, और इसे अपने सी # परियोजनाओं से संदर्भित करें। अन्यथा, इसे परिवर्तित करना सुरक्षित है, लेकिन आपको अलग-अलग प्रकार को वापस करने के लिए इसका उपयोग करने वाले किसी भी कोड को बदलना होगा।
यह इंटरफ़ेस का उपयोग कर रहे कोड को तोड़ देता है। यदि संभव हो तो मैं इससे बचना चाहूंगा। – user25825