Cześć,
Czy istnieje w c# jakiś sposób (podobnie jak w Javie) dla podanego poniżej przypadku, umożliwiający dostęp do metody Update() klasy Velocity wewnątrz klasy Ball i brak dostępu z poza klasy Ball (klasa Window w innym pliku)?
Klasa Ball, z zagnieżdżoną klasą Velocity:
namespace MyNamespace {
class Ball {
public class Velocity {
public double X { get; private set; }
public double Y { get; private set; }
public double Z { get; private set; }
public double A { get; private set; }
public double B { get; private set; }
public double C { get; private set; }
private void Update(Position currentPosition, double deltaTime) {
/* pewne obliczenia */
}
}
public Velocity CurrentVelocity { get; private set; } = new Velocity();
public void Update() {
Position currentPosition = /* pewne obliczenia */;
double deltaTime = /* pewne obliczenia */;
CurrentVelocity.Update(currentPosition, deltaTime); //Błąd, metoda Update w klasie Velocity jest niewidoczna. Tutaj dostęp do metody Update powinien być możlowy
}
}
}
Klasa Window, zdefiniowana w osobnym pliku:
namespace MyNamespace {
class Window {
private Ball ball;
public Window() {
ball = new Ball();
ball.CurrentVelocity.Update(); //Tutaj dostęp do metody Update powinien być zablokowany
}
}
}
Wiem że istnieje modyfikator dostępu internal, jednak w powyższym przykladzie metoda Update() klasy Velocity jest wtedy również dostępna w klasie Window:
namespace MyNamespace {
class Ball {
public class Velocity {
/* ... */
internal void Update(Position currentPosition, double deltaTime) {
/* ... */
}
}
}
}