Rozważmy dosłowne kopię Blocha budowniczy (ze zmianami wprowadzonymi do składni C# 's):Dlaczego nie Builder praca Wzór Blocha w C#
public class NutritionFacts
{
public int ServingSize { get; private set; }
public int Servings { get; private set; }
public int Calories { get; private set; }
...
public class Builder
{
private int ServingSize { get; set; }
private int Servings { get; set; }
private int Calories { get; set; }
public Builder(int servingSize, int servings)
{
ServingSize = servingSize;
Servings = servings;
}
public Builder Calories(int calories)
{ Calories = calories; return this; }
public NutritionFacts Build()
{
return new NutritionFacts(this);
}
}
private NuitritionFacts(Builder builder)
{
ServingSize = builder.ServingSize;
Servings = builder.Servings;
Calories = builder.Calories;
}
}
Jeśli próbujesz uruchomić to, kompilator C# będzie narzekać, że nie ma uprawnień dostępu do prywatnych właściwości Buildera. Jednak w Javie możesz to zrobić. Jaka zasada różni się w C#, która uniemożliwia dostęp do prywatnych właściwości zagnieżdżonych klas?
(Zdaję sobie sprawę, że ludzie podali alternatywę here i to świetnie, ale to, co mnie interesuje, to dlaczego nie można używać wzorca Java bez modyfikacji).
Witam Zadaję to dokładne pytanie. Odbieram całkiem dobre odpowiedzi. Tutaj idziemy [http://stackoverflow.com/questions/512651/how-is-javas-notion-of-static-different-crom-cs](http://stackoverflow.com/questions/512651/how-is -javas-pojęcie-statyczne-różne-od-cs) – uriDium