Count PDF pages in constructor
Assuming you want to avoid opening the file unless necessary (ie until someone requests the PageCount), I would use a nullable private field, as follows:

private int? _pageCount;

public int PageCount
{
    get
    {
        if (!_pageCount.HasValue) {
            //existing code to determine page count

            _pageCount = /* result */
        }
        return _pageCount;
    }
}


The first time the property is accessed, the private member will be null, so the code to update the value will be run.  Subsequent accesses will use the cached value.