Главная страница
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
2-1172738397
МегаПупс
2007-03-01 11:39
2007.03.25
Работа с файлами


11-1151018833
DevilDevil
2006-06-23 03:27
2007.03.25
Smart-Linking


15-1172499171
Petr V. Abramov
2007-02-26 17:12
2007.03.25
С почином!


15-1172766504
T
2007-03-01 19:28
2007.03.25
C++


4-1162877920
Yevgeny
2006-11-07 08:38
2007.03.25
как запустить bat-файл из службы?