2012-03-16 12 views

Respuesta

7

Creo que esa persona es incorrecta. From MSDN

No se puede definir una propiedad de extensión, campo o evento.

+1

Correcto. Esto nunca fue compatible. –

+1

VB.NET tiene la (no) afortunada funcionalidad de permitirle omitir los parámetros vacíos de un método, que también funciona para los métodos de extensión, por lo que podría escribir un método de extensión y hacerlo * ver * como una propiedad de extensión. – vcsjones

0

Según la MSDN (borrador) documentation para Visual Studio 11, propiedades de extensión no están disponibles en VS 11 (es decir, .NET 4.5) tampoco.

Es curioso, aunque la búsqueda arroja algunas instancias donde los bloggers, etc., piensan que es posible, incluyendo a Ayende en un artículo en su blog here.

+0

De hecho, es muy raro, me pregunto qué estarán haciendo si creen que se trata de propiedades de expansión. – Terry

1

Esto es casi posible. Aprendí este buen truco de Daniel Cazzulino.

Devuelve un tipo de un método de extensión que expone las propiedades. Esto es C#, pero debe ser comprensible.

public static class ListExtensions 
{ 
    // this extension method returns the type with properties 
    public static ListExtender<T> Extend<T>(this List<T> target) 
    { 
     //null check skipped 
     return new ListExtender<T>(target); 
    } 
} 

public sealed class ListExtender<T> 
{ 
    private List<T> _target; 

    // this is a pseudo extension property 
    public T First { get { return _target[0]; } } 

    public ListExtender(List<T> target) 
    { 
     _target = target; 
    } 
} 

Aparte de eso, la respuesta es no.

Cuestiones relacionadas