Dowiedziane przy okazji DevDay

Posted on Updated on

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")]

Leave a comment