VB -> C#: If interface and class member differ only by capitalization, the class member's case is changed.
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 35/100
Direzione di ricerca
Riproduci l’input VB segnalato e confronta il C# generato con l’implementazione esplicita dell’interfaccia prevista. Traccia la gestione da parte del convertitore dei membri Implements i cui nomi differiscono solo per maiuscole e minuscole, quindi aggiungi una copertura di regressione che dimostri che vengono preservati la combinazione originale di maiuscole e minuscole del membro e il mapping dell’interfaccia.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
VB.Net input code
Public Interface I
Public Sub A()
End Interface
Public Class C
Implements I
Public Sub a() Implements I.A
End Sub
End Class
Erroneous output
public partial interface I
{
public void A();
}
public partial class C : I
{
public void A()
{
}
}
Expected output
public partial interface I
{
public void A();
}
public partial class C : I
{
public void a()
{
}
void I.A() => a();
}
OR
public partial interface I
{
public void A();
}
public partial class C : I
{
/* TODO WARNING: Case changed from a to A (to match supertype) */
public void A()
{
}
}
Details
- Product in use: icsharpcode.github.io/CodeConverter
- Version in use: 9.0.4.0
- Why is this a problem?
- VB.NET is case-insensitive, but CIL isn't. Thus, if you convert a library from VB to C# and the capitalization of a public member changes, you break binary-compatibility, i.e., an application compiled to the VB version of your library won't work with the C# version.
- You also break source-compatibility, if your VB library is used by C# applications.
- The converter already produces the expected output (method + second method with explicit interface implementation) if you replace
Public Sub a() Implements I.AbyPublic Sub b() Implements I.A. So the fix might be as easy as changing a case-insensitive comparison to a case-sensitive one. - I admit that
a/Ais a contrived example, but a real-life use case would be an abbreviation that is capitalized differently. In our code base, we stumbled upon this issue withSub AddSubSQL(interface) vsSub AddSubSql(class). - Note that this change will trigger a warning: CS3005 Identifier 'C.a' differing only in case is not CLS-compliant, so it might make sense to additionally add the a
[CLSCompliant(false)]attribute to the method. Unfortunately, I don't know enough about CLS compliance to be able to evaluate the impact of this change.
- Lingua principale
- C#
- Stelle
- 913
- Fork
- 243
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di icsharpcode/CodeConverter
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
icsharpcode/CodeConverter#1271 · 1 commento ·
-
C# -> VB: most pattern matching fails to convertForse già presa Una pull request collegata a questa issue è aperta o già unita. ApertaC# -> VB
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
icsharpcode/CodeConverter#1281 ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 55/100
icsharpcode/CodeConverter#1275 ·
-
VB -> C#: Handleres of sub properties being untrackedForse già presa Una pull request collegata a questa issue è aperta o già unita. ApertaVB -> C#
Difficoltà 3/5 1-2 giorni Idoneità per principianti 62/100
icsharpcode/CodeConverter#1273 ·
-
VB -> C#: "Group By Into" Linq queries supressing aggregations ("Into" part) in the converted codeApertaDifficult area VB -> C#
Difficoltà 3/5 1-2 giorni Idoneità per principianti 74/100
icsharpcode/CodeConverter#1272 ·
Tutte le issue di icsharpcode/CodeConverter
Issue simili
-
[C#]:主页联网更新的提示投稿横幅指向错误Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
PCL-Community/PCL-CE#3652 ·
I maintainer di solito rispondono entro 1 giorno
-
area:frontend bug FE P3
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
klasolsson81/jobbliggaren#2010 ·
I maintainer di solito rispondono entro 1 giorno
-
[aw] Upgrade availableApertaagentic-workflows untriaged
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 65/100
I maintainer di solito rispondono entro 1 giorno
-
area: homeblaze type: bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
RicoSuter/Namotion.Interceptor#630 ·
I maintainer di solito rispondono entro 1 giorno
-
Akka.Hosting enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100