Re[10]: Использование методов расширений !!!
От: Lloyd Россия  
Дата: 01.06.10 14:56
Оценка: 1 (1)
Здравствуйте, _FRED_, Вы писали:

L>>Но при этом private-методы можно использовать как расширения.


_FR>Нет, засада в другом: есть у меня самый обычный класс A в котором используется класс B, да используется так активно, что хотелось бы к этому самому классу B добавить методы-расштрения. Заводит для этой цели отдельный класс не хочется, потому что нигде эти расширения более не нужны, да и использовать эти расширения могут закрытые члены класса A.


_FR>Конечно, в данном случае обычный статический метод покрывает за глаза расширение, но вызов расширения всё же выглядит зачастую более удачно.


Ну так и я о том же:
using System;

static class Program {
    static void Main() {
        "123".Print();
    }

    private static void Print(this string src) {
        Console.WriteLine(src);
    }
}
Re[11]: Использование методов расширений !!!
От: _FRED_ Черногория
Дата: 01.06.10 15:22
Оценка: 1 (1)
Здравствуйте, Lloyd, Вы писали:

L>>>Но при этом private-методы можно использовать как расширения.

_FR>>Нет, засада в другом: есть у меня самый обычный класс A в котором используется класс B, да используется так активно, что хотелось бы к этому самому классу B добавить методы-расштрения. Заводит для этой цели отдельный класс не хочется, потому что нигде эти расширения более не нужны, да и использовать эти расширения могут закрытые члены класса A.
_FR>>Конечно, в данном случае обычный статический метод покрывает за глаза расширение, но вызов расширения всё же выглядит зачастую более удачно.
L>Ну так и я о том же:

Класс A обычно у меня не static Со static ясное дело никаких проблем.
Help will always be given at Hogwarts to those who ask for it.
Re[6]: Использование методов расширений !!!
От: Аноним  
Дата: 01.06.10 17:29
Оценка:
Здравствуйте, Lloyd, Вы писали:

А>>А ну да, показывает Ладно, а почему в MSDN для класса String явно описываются методы расширения?


L>Документация-то рукописная, там что угодно может быть.


А>>Где для этого класса они определяются? Ведь никаго пространства имен для класса String я не импортирую


L>Если ты откроешь документацию по самому методу, то увидишь, где он объявлен.


Фу, Господи, паранойя меня одолела. Понятно, все методы расширения класса String определяются в System.Linq. Убираешь using System.Linq; и методов расширения как не бывало. Это очень оригинально. Открываешь документацию по классу, а там чудные методы расширения, даже в отдельный раздел вынесены. Вот только непонятно, откуда они взялись и ни где не написано, что увидеть их можно только если некое пространство имен импортируешь. То есть не испытаешь проблем, только если в студии создаешь проект по-умолчанию, тогда ведь using System.Linq; автоматом добавляется. А если будешь писать с нуля, тогда догадывайся сам
Дали-бы как в Википедии редактировать статьи, меньше косяков бы было
Re[7]: Использование методов расширений !!!
От: Lloyd Россия  
Дата: 01.06.10 17:41
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Дали-бы как в Википедии редактировать статьи, меньше косяков бы было


Все гораздо проще — надо просто почитать документацию по языку, которым вы пользуетесь. RTFM, типа.
Re[8]: Использование методов расширений !!!
От: Аноним  
Дата: 01.06.10 17:45
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, Аноним, Вы писали:


А>>Дали-бы как в Википедии редактировать статьи, меньше косяков бы было


L>Все гораздо проще — надо просто почитать документацию по языку, которым вы пользуетесь. RTFM, типа.


При чем тут язык. String класс Framework'a, непосредственно к C# это не имеет отношения, вот я MSDN и читаю.
Re[9]: Использование методов расширений !!!
От: Lloyd Россия  
Дата: 01.06.10 17:48
Оценка:
Здравствуйте, Аноним, Вы писали:

L>>Все гораздо проще — надо просто почитать документацию по языку, которым вы пользуетесь. RTFM, типа.


А>При чем тут язык. String класс Framework'a, непосредственно к C# это не имеет отношения, вот я MSDN и читаю.


Это имеет самое непосредственное отношение к C#.
Re[10]: Использование методов расширений !!!
От: Аноним  
Дата: 01.06.10 17:59
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, Аноним, Вы писали:


L>>>Все гораздо проще — надо просто почитать документацию по языку, которым вы пользуетесь. RTFM, типа.


А>>При чем тут язык. String класс Framework'a, непосредственно к C# это не имеет отношения, вот я MSDN и читаю.


L>Это имеет самое непосредственное отношение к C#.


А ну да, торможу что-то
Re[7]: Использование методов расширений !!!
От: pr0ff  
Дата: 01.06.10 22:07
Оценка: 3 (1)
Здравствуйте, <Аноним>, Вы писали:
А>Фу, Господи, паранойя меня одолела. Понятно, все методы расширения класса String определяются в System.Linq. Убираешь using System.Linq; и методов расширения как не бывало. Это очень оригинально...

Думаю речь про методы класса Enumerable. Он реализует методы Linq для классов реализующих интерфейсы IEnumerable и IEnumerable<T>. А класс string реализует интерфейс IEnumerable<char>.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Re[7]: Использование методов расширений !!!
От: andy1618 Россия  
Дата: 02.06.10 02:05
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Убираешь using System.Linq; и методов расширения как не бывало. Это очень оригинально.


Ну, на то они и расширения. Тем более, как уже писали выше, это расширения не конкретно для класса string, а для всех классов, реализующих интерфейс IEnumerable<T>. Есть подозрение, что попытка поиска всех возможных расширений для текущего контекста — задача очень трудоёмкая (да и неоднозначная).

Кстати, наверное, именно из-за сложности полноценного решения этой задачи разработчики и включили "using System.Linq" в дефолтную заготовку класса — не совсем эстетично, зато "дёшево, надёжно и практично"
Re[8]: Использование методов расширений !!!
От: pr0ff  
Дата: 02.06.10 05:48
Оценка:
Здравствуйте, andy1618, Вы писали:
A>Кстати, наверное, именно из-за сложности полноценного решения этой задачи разработчики и включили "using System.Linq" в дефолтную заготовку класса — не совсем эстетично, зато "дёшево, надёжно и практично"

Еще бы проверяли подлключена ли соответствующая сборка...
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Re[12]: Использование методов расширений !!!
От: i1yich  
Дата: 02.06.10 14:05
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>Здравствуйте, Lloyd, Вы писали:


L>>>>Но при этом private-методы можно использовать как расширения.

_FR>>>Нет, засада в другом: есть у меня самый обычный класс A в котором используется класс B, да используется так активно, что хотелось бы к этому самому классу B добавить методы-расштрения. Заводит для этой цели отдельный класс не хочется, потому что нигде эти расширения более не нужны, да и использовать эти расширения могут закрытые члены класса A.
_FR>>>Конечно, в данном случае обычный статический метод покрывает за глаза расширение, но вызов расширения всё же выглядит зачастую более удачно.
L>>Ну так и я о том же:

_FR>Класс A обычно у меня не static Со static ясное дело никаких проблем.


Да, тут нельзя даже сделать класс с расширениями вложенным.
У методов-расширений какие-то нелепые ограничения на класс, в котором они определяются, интересно, чем они вызваны?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.