VB -> C#: Handleres of sub properties being untracked

Aperta
#1,273 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
62/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Tranquilla
Stack tecnologico
csharp
Ambito
devtools

Direzione di ricerca

Riproduci il problema con l’input VB.NET fornito usando la CLI codeconv e confronta il C# generato con l’output previsto. Traccia la gestione da parte del convertitore delle clausole VB Handles per le proprietà annidate; il lavoro è completato quando Editor1.Properties.Click è sottoscritto in InitializeComponent insieme a Editor1.Click.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

VB -> C#
VB.Net input code

Imports System.ComponentModel

Public Class EditorProperties
    Public Event Click As EventHandler  ' Handles clause for this event is silently dropped
End Class

Public Class Editor
    Private ReadOnly _properties As New EditorProperties()

    ' DesignerSerializationVisibility.Content is what makes this property usable in a Handles clause
    <DesignerSerializationVisibility(DesignerSerializationVisibility.Content)>
    Public ReadOnly Property Properties As EditorProperties
        Get
            Return _properties
        End Get
    End Property

    Public Event Click As EventHandler
End Class

<Microsoft.VisualBasic.CompilerServices.DesignerGenerated>
Partial Public Class Form1
    Private Sub InitializeComponent()
        Me.Editor1 = New Editor()
    End Sub
    Friend WithEvents Editor1 As Editor
End Class

Partial Public Class Form1
    Private Sub Editor1_Properties_Click(sender As Object, e As EventArgs) Handles Editor1.Properties.Click
    End Sub

    Private Sub Editor1_Click(sender As Object, e As EventArgs) Handles Editor1.Click
    End Sub
End Class

Erroneous output

public partial class Form1
{
    public Form1()
    {
        InitializeComponent();
    }
    private void InitializeComponent()
    {
        Editor1 = new Editor();
        Editor1.Click += new EventHandler(Editor1_Click);
    }
    internal Editor Editor1;
}

public partial class Form1
{
    private void Editor1_Properties_Click(object sender, EventArgs e) // This handler lost tracker
    {
    }

    private void Editor1_Click(object sender, EventArgs e)
    {
    }
}

Expected output

public partial class Form1
{
    public Form1()
    {
        InitializeComponent();
    }
    private void InitializeComponent()
    {
        Editor1 = new Editor();
        Editor1.Click += new EventHandler(Editor1_Click);
        Editor1.Properties.Click += new EventHandler(Editor1_Properties_Click); // Expected
    }
    internal Editor Editor1;
}

Details
  • Product in use: codeconv CLI global tool (icsharpcode.codeconverter.codeconv)
  • Version in use: 10.0.1.923
Lingua principale
C#
Stelle
913
Fork
244
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di icsharpcode/CodeConverter

Tutte le issue di icsharpcode/CodeConverter

Issue simili

Altre issue su C#

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.