Dowiedziane przy okazji DevDay
Pola i konstruktor lądują na dole klasy bo nas nie interesują.
[RoutePrefix("api/declarations")] public class DeclarationsController : ApiController { [Route("{declarationId:int}")] public IHttpActionResult GetDeclaration(int declarationId) { Declaration declaration = declarationsRepository.Get(declarationId); if (declaration == null) { return NotFound(); } return Ok(declaration); } // methods // fields and contructor readonly DeclarationsRepository declarationsRepository; public DeclarationsController(DeclarationsRepository declarationsRepository) { this.declarationsRepository = declarationsRepository; } }
Domyślnie nie tworzyć klas public. Pomoże to w enkapsulacji. Ma to zastosowanie gdy mamy architekturę wielowarstwową (która mieści się w wielu projektach). Jeśli mamy tylko jeden projekt to też piszmy bez public i tak wszystko będzie widoczne. Klasy domyślnie dostają internal, który oznacza że są widoczne w obrębie projektu.
Jeśli chodzi o testy to można nadać
[assembly: InternalsVisibleTo("App.Tests")]