BYTEINSIGHT
GAPVelocity AI Studio helps you move from outdated tech stacks to the latest desktop, web, and cloud platforms—smarter, faster, and with less risk.
Choose a platform to see migration options:
Our comprehensive approach to application modernization, from assessment to production deployment.
Transformation Services
Not Sure Where to Start?
This feature applies just for C# code generation. It occurs because the output could produce a duplication of declarations. This duplication could be generated when an implementing method has the name <Interface>_<Member> and the implementing class already has a member named <Member>, or when there are more than one implemented interfaces and there are two implementing members with the same names.
For these cases, .NET provides the Explicit Interface Declaration syntax that qualifies the member declaration in order to avoid this conflict. So the upgrading process for an implementing member, which name conflicts with another declaration in the implementing class or in another implemented interface, must be generated using this syntax. It consists in adding a prefix with the qualification of the interface that this member is implementing.
The second change consists in changing the references to that member using a casting to the interface.
AnInterface1.cls Public Function MyFoo() End Function Public Property Get AProp() As Integer End Property AnInterface2.cls Public Function MyFoo() End Function AClass.cls Implements AnInterface1 Implements AnInterface2 Public Function AnInterface1_MyFoo() Dim i As Integer i = AnInterface1_AProp End Function Public Function AnInterface2_MyFoo() ' Code End Function Public Property Get AnInterface1_AProp() As Integer ' Code End Property Public Property Get AProp() As Integer AProp = 0 End Property
internal class AClass : AnInterface1, AnInterface2 { object AnInterface1.MyFoo() { int i = ((AnInterface1)this).AProp; return null; } object AnInterface2.MyFoo() { // Code return null; } int AnInterface1.AProp { get { return 0; } } public int AProp { get { return 0; } } }