2012-03-16 107 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; 
    } 
} 

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