VB扩展属性而不是扩展方法

时间:2012-03-16 13:18:40

标签: vb.net properties

我看到了this post,我想知道这是否可以在VB中使用。

与扩展方法一样,VB.Net中是否存在扩展属性?

Here我读过他们,但找不到任何例子。

3 个答案:

答案 0 :(得分:7)

我认为这个人不正确。 From MSDN

  

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

答案 1 :(得分: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;
    }
}

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

答案 2 :(得分:0)

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

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