Identifying originating country of an IP address
the only issues that I see with this code so far is formatting.


class IPRangeRepository : IDisposable
    {
        public IPRangeRepository(string fileName)
        {
            this.fileName = fileName;
            xmlReader = XmlReader.Create(fileName);
        }



This indentation is not standard, it should look like this

class IPRangeRepository : IDisposable
{
    public IPRangeRepository(string fileName)
    {
        this.fileName = fileName;
        xmlReader = XmlReader.Create(fileName);
    }


and your if statements inside the while loop are not easy to read.


        while (xmlReader.Read())
        {
            // Ok instantiate object and then do comparison... 
            if (xmlReader.Name == "IPRange") { 
            var ipRange = IPRange.TryParse(xmlReader["Value"]);
            if (ipRange.IsIPAddressInRange(adress)) return xmlReader["Country"];
            }
        }



this is how I prefer to write this code

while (xmlReader.Read())
{
    // Ok instantiate object and then do comparison... 
    if (xmlReader.Name == "IPRange") { 
        var ipRange = IPRange.TryParse(xmlReader["Value"]);
        if (ipRange.IsIPAddressInRange(adress)) 
        {
            return xmlReader["Country"];
        }
    }
}


the return is a little too complex for something that I would one line, and most of the time if I can one line something it's going to look better as a ternary statement, this isn't one of those instances.

Always indent code inside of any block.