Приятелски методи и класове в C#
Има ли аналози на приятелски методи и класове в C#? Трябва да получите достъп до частно поле и метод от частен клас от друг клас.
Ситуация от реален проект:
Обект от класа Element може да бъде създаден от потребителя на приложението в неговата програма. В същото време има обект SChart, който също може да бъде създаден и използван от потребителя в техните програми. Някои методи от класа Element не могат да бъдат извикани от потребителя на приложението, защото не е необходимо (този метод се използва от други публични методи от същия клас). Има смисъл да декларирате този метод като частен. В същото време обект от класа SChart трябва да има достъп до този частен метод от класа Element. Ако в този случай отворим достъп (направим отворен метода на класа Element), тогава ще го отворим за потребителя на приложението, който ще използва както Element, така и SChart. Как да решим този проблем в този случай?
Ако по някакъв начин извратим, тогава така, че потребителят на класа Element да не бъде засегнат, т.е. за обикновен потребител на класа Element методът трябва да е частен (вместо публичен, но с допълнителен параметър).
Между другото, аналогът на вътрешния във VB .NET се нарича Friend-druh!
това означава, че трябва да поставите Element и SChart в един сбор и да декларирате този метод като вътрешен
друга възможност е да преместите този метод в интерфейс, за който само SChart ще знае (интерфейс като начин за комуникация на "приятели" :)) разбира се, този интерфейс може да се изчисли чрез отражение, но личният и вътрешният могат да бъдат изчислени чрез едно и също отражение и т.н.
Относно вътрешния: заюзат ток днес. Изглежда, че работи. За тази сметка мога уф, смятай. 0/.
Между другото, чрез атрибутите на методите можетенаправи достъпен за произволно сглобяване (не само текущото).