Форум: "Прочее";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];
ВнизДружественные методы и классы в C# Найти похожие ветки
← →
Cyrax © (2007-02-22 22:27) [0]Есть ли аналоги дружественных методов и классов в C# ?
Необходимо получить доступ к private-полю и к private-методу класса из другого класса...
Ситуация из реального проекта:
Объект класса Element может создаваться прикладным пользователем в своей программе. В то же время имеется объект SChart, который так же может создаваться и юзаться пользователем в своих программах.
Некоторый метод класса Element не может быть вызван прикладным пользователем по причине отсутствия в этом необходимости (этот метод используется другими public-методами этого же класса). Вполне резонно объявить этот метод как private.
В то же время объект класса SChart должен иметь доступ к этому private-методу класса Element. Если в этом случае мы откроем доступ (сделаем метод класса Element открытым), то тем самым мы его откроем его и для прикладного пользователя, который будет юзать как Element, так и SChart...
Как разрешить эту проблему в данном случае ?
Если уж как-то извращаться, то так, чтобы пользователя класса Element это не коснулось, т.е. для рядового пользователя класса Element метод должен быть закрытым (а не открытым, но с дополнительным параметром)...
← →
default © (2007-02-22 22:30) [1]internal?
← →
default © (2007-02-22 22:32) [2]кстати аналог internal в VB .NET так и зовётся Friend- друх!
← →
default © (2007-02-22 22:34) [3]то есть надо посадить Element и SChart в одну сборку и объявить этот метод как internal
← →
default © (2007-02-22 22:46) [4]ещё вариант вынести этот метод в интерфейс о котором будет знать только SChart(интерфейс как способ общения "своих":):))
конечно, этот интерфейс можно вычислить отражением, но тем же отражением можно вычислить и private и internal и тд
но интерфейс это, конечно, изврат
← →
default © (2007-02-22 22:54) [5]вот ты общаешься с другом в компании незнакомых и вы не можете говорить о сокровенном в присутствии незнакомым, но наедине у вас "свои" беседы могут быть:)
вот интерфейс в данном случае это аналог, можель реальности:)
так что если классы в разных сборках по логике должны быть, то не думай, а используй интрефрейсы:)
← →
Cyrax © (2007-02-26 19:27) [6]Отчёт для Default"а №1
-----------------------
По поводу internal: заюзал тока сегодня. Вроде как работает. На этот счёт могу посл..., тьфу, отреспектить...0/...
Кстати, через атрибуты методы можно сделать доступными и для произвольной сборки (не только текущей)...
p.s. Частенько, пока переваришь ветку, она уже теряется... Я ш не целый день за компом сижу...
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.044 c