- INDEX VB TO NET
- VBUC FEATURES
- LANGUAGE TRANSFORMATIONS
- INTERFACES SUPPORT
- UPGRADING DUPLICATED DECLARATIONS
Upgrading Duplicated Declarations
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.
Original VB6 code
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
VBUC resulting C#.NET code
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; } } }