2011-05-17 16 views
6

una vez que utilizó un fragmento de código que vi/encontrado en el pasado que le daría la única instrucción en un/captador pública/privada colocador, he sido hasta ahora incapaz de repetir que la hallan ya volver a instalar mi máquina.Fragmento de código para crear automáticamente getter/setter?

por ejemplo:

private string serverSMTP = string.empty; 

pude continuación, pulse Ctrl K + y convertirlo en esto:

 private string serverSMTP = string.Empty; 
    public string ServerSMTP 
    { 
     get { return serverSMTP; } 
     set 
     { 
      serverSMTP = value; 
      RaisePropertyChanged("ServerSMTP"); 
     } 
    } 

¿Alguna idea sobre cómo puedo crear algo que hacer eso o una ampliación/fragmento para cuidar de mí? En proyectos más grandes, esto me ahorraría mucho tiempo.

+1

¿Esto tiene que ver con mvvm y wpf? –

+0

No lo he visto hecho con la llamada RaisePropertyChanged en setter. Sin embargo, es posible que haya tenido un complemento que agregó este comportamiento a vs. Lo siento, no sirvo de nada. Pero sí sé que puede hacer esto: public string ServerSMTP {get; conjunto; } –

Respuesta

6

Si ya está utilizando el marco MVVM Light puede instalar los fragmentos de código que se incluyen con lo que va a hacer algo similar. Específicamente, el fragmento de "mvvminpc" hará lo que está buscando, aunque no tomará una declaración de campo existente y la convertirá en una propiedad con una notificación de cambio de propiedad.

http://mvvmlight.codeplex.com/sourcecontrol/latest#Installer/InstallItems/Snippets/CSharp/mvvmInpc.snippet

Los fragmentos de código para acelerar la adición de nuevas propiedades (sólo Visual Studio):
mvvminpc añade una nueva propiedad que puede vincularse a un modelo de vista.
mvvmlocatorproperty agrega un nuevo ViewModel a ViewModeLocator.
mvvmpropa agrega una nueva propiedad adjunta a DependencyObject (solo WPF).
mvvmpropdp agrega una nueva propiedad de dependencia a DependencyObject (solo WPF).
mvvmslpropa agrega una nueva propiedad adjunta a DependencyObject (solo Silverlight).
mvvmslpropdp añade una nueva propiedad de dependencia a un DependencyObject (Silverlight solamente).

3

poner este fragmento:

<?xml version="1.0" encoding="utf-8"?> 
<CodeSnippets 
    xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> 
    <CodeSnippet Format="1.0.0"> 
     <Header> 
      <Shortcut>propn</Shortcut> 
      <Title> 
       Notify Property 
      </Title> 
     </Header> 

     <Snippet> 
      <Declarations> 
       <Literal> 
        <ID>type</ID> 
        <ToolTip>Type</ToolTip> 
        <Default>int</Default> 
       </Literal> 
       <Literal> 
        <ID>field</ID> 
        <ToolTip>Field name</ToolTip> 
        <Default>fieldName</Default> 
       </Literal> 
       <Literal> 
        <ID>property</ID> 
        <ToolTip>Propery Name</ToolTip> 
        <Default>PropertyName</Default> 
       </Literal> 
      </Declarations> 

      <Code Language="CSharp"> 
       <![CDATA[  
private $type$ $field$; 
public $type$ $property$ 
{ 
    get { return $field$; } 
    set 
    { 
     $field$ = value; 
     if (PropertyChanged != null) 
      PropertyChanged(this, new PropertyChangedEventArgs("$property$")); 
    } 
} 
$end$]]> 
      </Code> 
     </Snippet> 
    </CodeSnippet> 
</CodeSnippets> 

dentro de un archivo de propn.snippet, en esta carpeta: C: \ Users [su_nombre_de_usuario] \ documentos \ Visual Studio 2010 \ \ fragmentos de código de Visual C# \ Mis fragmentos de código

y después podrás utilizar este fragmento mediante el acceso directo (ficha + tab propn +).

el xml fragmento es muy fácil de entender por su cuenta, por lo que se puede ajustar fácilmente a lo que usted necesita.

+1

No debe plantear el evento en ningún caso, pero solo si la propiedad realmente cambió, por lo que se debe hacer una comprobación 'campo! = Valor'. –

+0

no realmente. no rompe nada –

+1

entonces usted puede ahorrar un poco más de esfuerzo por 'automatización' esta codesnippet: http://www.codeproject.com/KB/codegen/CodeSnippetAutomation.aspx – ColinE

Cuestiones relacionadas