2012-03-16 111 views

回答

7

我相信那个人是不正确的。 From MSDN

您无法定义扩展属性,字段或事件。

+1

正确。这从未得到支持。 – 2012-03-16 13:38:52

+1

VB.NET具有允许您省略方法的空参数的(非)幸运功能,该方法也适用于扩展方法,因此您可以编写扩展方法并使其看起来像扩展属性。 – vcsjones 2012-03-16 13:45:48

0

根据适用于Visual Studio 11的MSDN(草案)documentation,扩展属性在VS 11(即.NET 4.5)中也不可用。

这很奇怪,虽然搜索引发了一些博客等人认为可能的情况,包括Ayende在他的博客here上的一篇文章。

+0

这真的很奇怪,我不知道他们在做什么,然后他们是否认为这是扩张属性。 – Terry 2012-03-16 16:21:06

1

这是几乎可能。从Daniel Cazzulino学习这个巧妙的技巧。

您从公开属性的扩展方法返回一个类型。这是C#,但应该可以理解。

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; 
    } 
} 

除此之外,答案是否定的。