2011-03-04 8 views
8

¿Hay alguna diferencia entre el acceso a una propiedad que tiene un campo respaldo¿Por qué ReSharper necesita escanear todos los archivos al convertir una propiedad en propiedad de automóvil?

private int _id; 
    public int Id 
    { 
     get { return _id; } 
     set { _id = value; } 
    } 

frente a un auto-propiedad?

public int Id { get; set; } 

La razón por la que pido es que al dejar ReSharper convertir una propiedad en una propiedad de auto parece a escanear todo mi solución, o al menos todas las aspx-archivos.

No puedo ver ninguna razón por la que debería haber alguna diferencia entre los dos fuera de la clase. ¿Esta ahí?

Respuesta

12

El compilador genera automáticamente el campo de respaldo para Propiedades automáticas, por lo que no, no debería haber ninguna diferencia.

ReSharper está escaneando todos los archivos, porque si tiene definida una clase Partial, podría estar utilizando el campo de respaldo en lugar de la propiedad pública aunque el código exista en archivos físicamente diferentes.

Por ejemplo:

// MyClass.cs 
public partial class MyClass 
{ 
    int _id; 
    public int ID { get { return _id; } set { _id = value; } } 
    public MyClass(int identifier) 
    { 
     ID = identifier; 
    } 
} 

// MyClass2.cs 
public partial class MyClass 
{ 
    public void ChangeID(int newID) 
    { 
     _id = newID; 
    } 
} 

ReSharper debe analizar todos los archivos, ya que no tiene manera de saber dónde se podría definir una clase parcial.

+1

+1 tiene perfecto sentido por qué el OP diría que estaba escaneando sus ASPX.CS ya que todos son parciales, y el código en cuestión es muy probable que sea una página.aspx.cs donde la propiedad está definida y, por lo tanto, es parcial. –

+1

+1 - ¡Buena idea! – BFree

+0

Explicación muy buena, estaba casi listo para preguntarle al OP si estaba seguro de si ReSharper en realidad lo hace – Dyppl

Cuestiones relacionadas