Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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.037 c
15-1172662527
ocean
2007-02-28 14:35
2007.03.25
Проблема с сетью


15-1172681320
Чапаев
2007-02-28 19:48
2007.03.25
Про *.wav


2-1172999997
azl
2007-03-04 12:19
2007.03.25
Сортировка записей в текстовом файле


15-1172772591
Ringo
2007-03-01 21:09
2007.03.25
Мораль или смерть?


1-1170245684
alexey_mas
2007-01-31 15:14
2007.03.25
помогите с обработкой события в run-time





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский