Конференция ".Net" » Пространства имен [C#]
 
  • MeF Dei Corvi © (13.09.05 15:18) [0]
    Вообще, конечно, глупо задавать вопрос по C# на форуме Мастеров Delphi, но всё же реклама VS2005 же есть, значит кого-то это всё-таки интерисует. Кроме того, только что узнал, что C# является версией Delphi :) судя по строчке
    Версия Delphi:  D8;  D2005;  C#; в форме добавления вопроса...

    Собственно вопрос:

    Можно ли класс частично задать в одном пространстве имен и частично в другом? Нужно сделать что-то вроде этого:

    namespace ver0_1
    {
      static class Lib
      {
         static void Method1();
      }

    }
    namespace ver0_2
    {
      static class Lib
      {
         static void Method2();
      }

    }
    ...
    --------------------------------
    using ver0_1;
    using ver0_2;
    ...
      Lib.Method1();
      Lib.Method2();


    Не знаю, как это можно реализовать, а использовать ver0_1.Lib.Method1() и ver0_2.Lib.Method2() очень не хочется... Есть ли хоть какие-то способы сделать что-то подобное.
  • Lamer@fools.ua © (13.09.05 17:19) [1]
    >>MeF Dei Corvi ©   (13.09.05 15:18)

    Разбивать класс на части по пространствам имён нельзя.

    >Не знаю, как это можно реализовать, а использовать ver0_1.Lib.Method1() и ver0_2.Lib.Method2() очень не хочется...

    Назовите классы по-разному.
  • MeF Dei Corvi © (13.09.05 17:49) [2]

    > Назовите классы по-разному.

    По-разному неудобно, т.к. функций очень много и вспоминать какая функция к какой версии принадлежит нереально.
  • Канадец (13.09.05 17:57) [3]
    >MeF Dei Corvi ©

    Странная постановка вопроса. Пространства имён как раз и предназначена для избежания конфликтов имён. Такая постановка вопроса равносильна просьбе предоставить автомобиль, который не ездит.
  • MeF Dei Corvi © (13.09.05 18:11) [4]

    > Пространства имён как раз и предназначена для избежания
    > конфликтов имён

    Ну вообще-то да. Просто пытаюсь сделать возможность "отключить" часть ф-ий. Есть некая библиотека в dll. Есть несколько версий этой библиотеки, в каждой новой версии добавлялись новые ф-ии. Допустим у меня последняя версия этой библиотеки, но я хочу написать приложение, работающее с более старыми версиями, т.е. оно не должно использовать новых ф-ий.
    Количество ф-ий более 300. Ес-но я не буду запоминать к какой версии какие ф-ии принадлежат, а лезть в документацию и смотреть какие ф-ии принадлежат к какой версии я не буду. Мне было бы намного проще, если бы IDE показывала ф-ии только до определенной версии. В Дельфи я бы просто сделал несколько unit-ов. Но в C# нельзя задавать ф-ии вне класса...
    Если бы можно было частично задавать класс в нескольких пространствах имен, то реализовывалось бы это элементарно.
    Но, похоже это не реально, так что буду искать другие пути.
  • мимо (13.09.05 22:06) [5]
    Есть атрибут EditorBrowsable, отключающий отображение и просмотр отмеченных им свойств и функций в редакторе кода, одно есть но, единственное, что я не уверен, работает ли это в Дельфииском С#, я не знаю. Хотя, CLS, однако. Уже уверен, что не работает - проверил. СТранные рабята в брлнде. Перешел на VS - нарадоваться не могу, все микрософтверные радости. Так что, если пишете на С#, очень рекомендую бросить делать это с дельфи.
  • alexbou (03.10.05 18:44) [6]
    в тему - можно эээ интерфейсы публиковать для класса типа IIntf_v01, Intf_v02
  • drpass © (05.10.05 01:17) [7]

    > Просто пытаюсь сделать возможность "отключить" часть ф-ий.
    >  Есть некая библиотека в dll. Есть несколько версий этой
    > библиотеки, в каждой новой версии добавлялись новые ф-ии.
    >

    Создавай класс-потомок, в котором добавляй нужные функции. Или имей один класс и разные версии интерфейсов. А программа уже пусть разбирается - какая ей досталась библиотека, и какой самый продвинутый класс/интерфейс она способна предоставить. Это стандартное решение для подобных случаев, и не нужно изобретать велосипед
 
Конференция ".Net" » Пространства имен [C#]
Есть новые Нет новых   [119300   +40][b:0][p:0.001]