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

Abierto
#1,273 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
62/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Tranquilo
Stack tecnológico
csharp
Área
devtools

Línea de trabajo

Reproduce el problema con la entrada VB.NET proporcionada usando la CLI codeconv y compara el C# generado con la salida esperada. Rastrea cómo el convertidor gestiona las cláusulas VB Handles para propiedades anidadas; se considera terminado cuando Editor1.Properties.Click queda suscrito en InitializeComponent junto con Editor1.Click.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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
Lenguaje dominante
C#
Estrellas
913
Forks
244
Métricas de merge de PR
Sin PR fusionados en 30 d

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de icsharpcode/CodeConverter

Todos los issues de icsharpcode/CodeConverter

Issues similares

Más issues de C#

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.