Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.06.2012, 14:45   #1
mike_tihomirov
Пользователь
 
Регистрация: 15.02.2010
Сообщений: 58
По умолчанию Методы расширения, проблема из за разных пространств имен

Доброго дня. Смысл вопроса такой :

Код:
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string aaa = "dfsd";
            aaa.Fff(); //Здесь проблема: "Abigious invocation"
        }
    }

    static class A
    {
         public static void Fff(this string s){Console.WriteLine("A");}
    }
    static class B
    {
        public static void Fff(this string s) { Console.WriteLine("B"); }
    }
}
К примеру нужен метод класса А. Как разрешить?
Не бывает глупых вопросов.
Глупец тот, кто не спрашивает.
mike_tihomirov вне форума Ответить с цитированием
Старый 25.06.2012, 15:07   #2
Reskov
Форумчанин
 
Аватар для Reskov
 
Регистрация: 17.12.2008
Сообщений: 250
По умолчанию

Цитата:
Extension methods provide you with a way to give interfaces not just one default implementation but as many as you need, and you can choose between them simply by bringing the right namespace(s) into your lexical scope with using.
просто положите их в разные намеспайсы, так как понял и взависимости от того какой метод надо вызвать подключайте тот или иной намеспайс

Код:
namespace A1
{
    static class A
    {
        public static void Fff(this string s) { Console.WriteLine("A"); }
    }

}
namespace B1
{
    static class B
    {
        public static void Fff(this string s) { Console.WriteLine("B"); }
    }

}
1)еще можно передавать как параметр enum которых будет выбирать между A и B,
2) а воебще можно не использовать методы расширения и писать через статик A.Fff(aaa),
3) или я бы взглянул на патерн стратегия если таких классов много, отказался от статика и экстеншион
4) static class A
{
public static bool a{get;set;}
public static void Fff(this string s)
{
if (a) Console.WriteLine("A"); else Console.WriteLine("B");
}
}
Reskov вне форума Ответить с цитированием
Старый 25.06.2012, 15:52   #3
mike_tihomirov
Пользователь
 
Регистрация: 15.02.2010
Сообщений: 58
По умолчанию

Reskov, спасибо!
Не бывает глупых вопросов.
Глупец тот, кто не спрашивает.
mike_tihomirov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Срабатывание разных макросов при изменении разных диапазонов на листе strannick Microsoft Office Excel 2 26.03.2012 18:28
Проблема с кодировкой файла расширения .BAS TheDer Помощь студентам 3 21.04.2011 10:22
Объединение данных из разных Файлов на разных листах одной книги Nikodim113 Microsoft Office Excel 20 12.01.2011 07:12
Проблема с сайтом в разных браузерах VivaLaMax HTML и CSS 7 05.08.2010 23:54
проблема с подключением пространства имен whiskaz Помощь студентам 2 24.03.2010 22:40