Wie VB.net Interface mit Enum zu C # konvertieren

7

Ich habe die folgende VB.net-Schnittstelle, die ich an C # portieren muss. C # erlaubt keine Aufzählungen in Schnittstellen. Wie kann ich dies portieren, ohne Code zu ändern, der diese Schnittstelle verwendet?

%Vor%     
user25825 07.10.2008, 13:55
quelle

2 Antworten

11

Kurz gesagt, Sie können diese Schnittstelle nicht ändern, ohne Code zu unterbrechen, weil C # Typen in Schnittstellen nicht verschachteln kann. Wenn Sie die Schnittstelle der VB.NET-Versionen implementieren, geben Sie an, dass Number einen Typ von MyInterface.MyEnum zurückgibt:

%Vor%

Da C # jedoch keine Typen in Schnittstellen verschachteln kann, geben Sie einen anderen Datentyp zurück, wenn Sie den Enumerator aus der Schnittstelle herausbrechen: In diesem Fall MyEnum.

%Vor%

Denken Sie darüber nach, indem Sie den vollständig qualifizierten Typnamen verwenden. In der VB.NET-Schnittstelle haben Sie einen Rückgabetyp von

MyProject.MyInterface.MyEnum

In der C # -Schnittstelle haben Sie:

MyProject.MyEnum.

Leider müsste Code, der die VB.NET-Schnittstelle implementiert, geändert werden, um die Tatsache zu unterstützen, dass sich der von MyInterface.Number zurückgegebene Typ geändert hat.

IL unterstützt Verschachtelungstypen innerhalb von Schnittstellen. Daher ist es ein Rätsel, warum C # nicht funktioniert:

%Vor%

{     .property-Instanz Werttyp TestInterfaces.MyInterface / MyEnum-Nummer     {         .get-Instanz Werttyp TestInterfaces.MyInterface / MyEnum TestInterfaces.MyInterface :: get_Number ()     }

%Vor%

{         .field public static literal Werttyp TestInterfaces.MyInterface / MyEnum Maybe = int32 (2)

%Vor%

}

Wenn Sie in anderen Assemblys, die diese Schnittstelle verwenden, viel Code haben, ist es am besten, wenn Sie ihn in einer separaten VB.NET-Assembly aufbewahren und auf Ihre C # -Projekte verweisen. Andernfalls ist es sicher, es zu konvertieren, aber Sie müssen jeden Code ändern, der es verwendet, um den anderen Typ zurückzugeben.

    
Jeremy Frey 07.10.2008, 14:24
quelle
13
%Vor%     
Alexander Kojevnikov 07.10.2008 13:57
quelle

Tags und Links