-
Вообще, конечно, глупо задавать вопрос по C# на форуме Мастеров Delphi, но всё же реклама VS2005 же есть, значит кого-то это всё-таки интерисует. Кроме того, только что узнал, что C# является версией Delphi :) судя по строчке Версия Delphi: D8; D2005; C#; в форме добавления вопроса... Собственно вопрос: Можно ли класс частично задать в одном пространстве имен и частично в другом? Нужно сделать что-то вроде этого:
namespace ver0_1
}
namespace ver0_2
}
...
--------------------------------
using ver0_1;
using ver0_2;
...
Lib.Method1();
Lib.Method2();
Не знаю, как это можно реализовать, а использовать ver0_1.Lib.Method1() и ver0_2.Lib.Method2() очень не хочется... Есть ли хоть какие-то способы сделать что-то подобное.
-
>>MeF Dei Corvi © (13.09.05 15:18)
Разбивать класс на части по пространствам имён нельзя.
>Не знаю, как это можно реализовать, а использовать ver0_1.Lib.Method1() и ver0_2.Lib.Method2() очень не хочется...
Назовите классы по-разному.
-
> Назовите классы по-разному.
По-разному неудобно, т.к. функций очень много и вспоминать какая функция к какой версии принадлежит нереально.
-
>MeF Dei Corvi ©
Странная постановка вопроса. Пространства имён как раз и предназначена для избежания конфликтов имён. Такая постановка вопроса равносильна просьбе предоставить автомобиль, который не ездит.
-
> Пространства имён как раз и предназначена для избежания > конфликтов имён
Ну вообще-то да. Просто пытаюсь сделать возможность "отключить" часть ф-ий. Есть некая библиотека в dll. Есть несколько версий этой библиотеки, в каждой новой версии добавлялись новые ф-ии. Допустим у меня последняя версия этой библиотеки, но я хочу написать приложение, работающее с более старыми версиями, т.е. оно не должно использовать новых ф-ий. Количество ф-ий более 300. Ес-но я не буду запоминать к какой версии какие ф-ии принадлежат, а лезть в документацию и смотреть какие ф-ии принадлежат к какой версии я не буду. Мне было бы намного проще, если бы IDE показывала ф-ии только до определенной версии. В Дельфи я бы просто сделал несколько unit-ов. Но в C# нельзя задавать ф-ии вне класса... Если бы можно было частично задавать класс в нескольких пространствах имен, то реализовывалось бы это элементарно. Но, похоже это не реально, так что буду искать другие пути.
-
Есть атрибут EditorBrowsable, отключающий отображение и просмотр отмеченных им свойств и функций в редакторе кода, одно есть но, единственное, что я не уверен, работает ли это в Дельфииском С#, я не знаю. Хотя, CLS, однако. Уже уверен, что не работает - проверил. СТранные рабята в брлнде. Перешел на VS - нарадоваться не могу, все микрософтверные радости. Так что, если пишете на С#, очень рекомендую бросить делать это с дельфи.
-
в тему - можно эээ интерфейсы публиковать для класса типа IIntf_v01, Intf_v02
-
> Просто пытаюсь сделать возможность "отключить" часть ф-ий. > Есть некая библиотека в dll. Есть несколько версий этой > библиотеки, в каждой новой версии добавлялись новые ф-ии. >
Создавай класс-потомок, в котором добавляй нужные функции. Или имей один класс и разные версии интерфейсов. А программа уже пусть разбирается - какая ей досталась библиотека, и какой самый продвинутый класс/интерфейс она способна предоставить. Это стандартное решение для подобных случаев, и не нужно изобретать велосипед
|