Example #1
0
        public IPhoneBookEntry GetPhoneBook(int id)
        {
            var unvalidatedEntry = database[id];          //e.g. "+39 122-34-56-78"

            return(PhoneBookEntry.Get(unvalidatedEntry)); //from db
            // if db has a null or invalid entry, we will get an InvalidPhoneBookEntry object!
            // that we cannot add back or perform any valid phone book entry operation on it!
            // that's type safety!!!
        }
Example #2
0
        public int AddEntry(PhoneBookEntry validatedPhoneBookEntry)
        {
            int id = database.Count;

            database.Add(id, validatedPhoneBookEntry.Entry);
            return(id);
            // we know is valid!
            // because the object PhoneBookEntry only has a private constructor!
            // accessed via it's static creational factory method which also validates its arguments!
        }