2011-05-20 15 views
7

mi código es el siguiente:Eazfuscator. Se produce un error cuando se utiliza el control DataGridView

IList<Users> myData = new List<Users>(); 

myData = HelperUsers.GetUsersList(); // return IList<Users> 

BindingSource bsUsers = new BindingSource { DataSource = myData }; 
dataGridViewUsers.DataSource = bsUsers; 

dataGridViewUsers.Columns["Name"].HeaderText = "Name"; 
dataGridViewUsers.Columns["LastName"].HeaderText = "Last name"; 

dataGridViewUsers.Invalidate(); 

funciona perfectamente todavía en depuración, pero cuando se compila como releace se produce después de error "Referencia a objeto no establecida como instancia de un objeto." en la línea de:

dataGridViewUsers.Columns["Name"].HeaderText = "Name"; 

Gracias

Respuesta

9

La propiedad Nombre de la clase de usuarios está siendo renombrado/ofuscado. Por lo tanto, la colección Columns no tiene una entrada para ella.

por la Eazfuscator puede hacer lo siguiente para desactivar el cambio de nombre propiedad de clase:

[System.Reflection.ObfuscationAttribute(Feature = "properties renaming")] 
class MyOneThousandAndThirdClass { 
    // ... 
} 

O para una sola propiedad:

class MyOneThousandAndFourthClass { 

    [System.Reflection.ObfuscationAttribute(Feature = "renaming")] 
    public string DisplayName 
    { 
     get; 
     set; 
    } 

} 
+0

bien, pero si os comento las líneas que establecen las columnas . continuar sin datos en la cuadrícula –

+0

@andres - Debería excluir esas propiedades de la ofuscación. En general, puede hacer esto haciendo público el tipo y las propiedades. Si eso no es lo que desea, la mayoría de las herramientas de ofuscación le permiten seleccionar explícitamente qué propiedades excluir de la ofuscación. – CodeNaked

+0

@andres - Actualizado con información de la documentación. – CodeNaked

Cuestiones relacionadas