Свойство расширения VB вместо метода расширения - PullRequest
5 голосов
/ 16 марта 2012

Я видел этот пост , и я хочу знать, возможно ли это в VB.

Так же, как и метод расширения, существуют ли свойства расширения в VB.Net?

Здесь Я читал, что они делают, но не может найти никаких примеров.

Ответы [ 3 ]

7 голосов
/ 16 марта 2012

Я считаю, что этот человек не прав. Из MSDN

Невозможно определить свойство расширения, поле или событие.

1 голос
/ 16 марта 2012

Это почти возможно . Узнал этот ловкий трюк от Даниэля Каззулино.

Вы возвращаете тип из метода расширения, который предоставляет свойства. Это 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;
    }
}

Кроме этого, ответ - нет.

0 голосов
/ 16 марта 2012

Согласно MSDN (черновик) документации для Visual Studio 11, свойства расширения также недоступны в VS 11 (т.е. .NET 4.5).

Странно, хотя поиск приводит к нескольким случаям, когда блоггеры и т. Д. Считают это возможным, включая Айенде в статье в своем блоге здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...