public House( Uri houseUrl, AddressLocation address, Area groundArea, Area houseArea, EnergyTypes energyType, DateTime forSaleDate, DateTime originalForSaleDate, IEnumerable <HouseImage> images, IEnumerable <InternetOption> internetOptions, IEnumerable <Shop> shops, IEnumerable <CategoryRating> ratings) { if (houseUrl.Scheme != Uri.UriSchemeHttp && houseUrl.Scheme != Uri.UriSchemeHttps) { throw new ArgumentException($"House url should use {Uri.UriSchemeHttp} or {Uri.UriSchemeHttps}.", nameof(houseUrl)); } if (originalForSaleDate > forSaleDate) { throw new ArgumentOutOfRangeException(nameof(forSaleDate), "Original for sale date cannot be later than the current for sale date."); } if (forSaleDate > DateTime.Now) { throw new ArgumentOutOfRangeException(nameof(forSaleDate), "For sale date cannot be in the future."); } if (originalForSaleDate > DateTime.Now) { throw new ArgumentOutOfRangeException(nameof(originalForSaleDate), "Original for sale date cannot be in the future."); } HouseUrl = houseUrl; Address = address ?? throw new ArgumentNullException(nameof(address)); GroundArea = groundArea ?? throw new ArgumentNullException(nameof(address)); HouseArea = houseArea ?? throw new ArgumentNullException(nameof(address)); EnergyType = energyType; ForSaleDate = forSaleDate; OriginalForSaleDate = originalForSaleDate; Images = new ReadOnlyCollection <HouseImage>(images?.ToList() ?? throw new ArgumentNullException(nameof(images))); InternetOptions = new ReadOnlyCollection <InternetOption>(internetOptions?.ToList() ?? throw new ArgumentNullException(nameof(internetOptions))); Shops = new ReadOnlyCollection <Shop>(shops?.ToList() ?? throw new ArgumentNullException(nameof(shops))); Ratings = new ReadOnlyCollection <CategoryRating>(ratings?.ToList() ?? throw new ArgumentNullException(nameof(ratings))); }
public Shop(string name, AddressLocation address) { Name = name ?? throw new ArgumentNullException(nameof(name)); Address = address ?? throw new ArgumentNullException(nameof(address)); }