Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.03.25;
Скачать: CL | DM;

Вниз

Дружественные методы и классы в 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.045 c
1-1170172428
RASkov
2007-01-30 18:53
2007.03.25
Ярлык


1-1170401901
Салат
2007-02-02 10:38
2007.03.25
выравнивание alRight/Left и alBottom на форме


15-1172594281
ArtemESC
2007-02-27 19:38
2007.03.25
Завалил последний экзамен на последней пересдаче...


6-1160139325
urdolphin
2006-10-06 16:55
2007.03.25
Утечка памяти TServerSocket и TClientSocket


1-1170368901
FAskerQ
2007-02-02 01:28
2007.03.25
Как узнать время создания процесса?