Главная страница
    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.044 c
2-1173098441
Cj
2007-03-05 15:40
2007.03.25
REGISTRY


2-1172742458
Ega23
2007-03-01 12:47
2007.03.25
Поведение VarType


6-1160399274
Wapo
2006-10-09 17:07
2007.03.25
размер не прочитанных даных в INDY


15-1172502904
IMHO
2007-02-26 18:15
2007.03.25
Посоветуйте утилиту для Интернета


2-1173084807
Pigeonhole
2007-03-05 11:53
2007.03.25
глюк в OpenDialog





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский