/// <summary>Create an instance of a <see cref="TraktPerson"/> subclass from an ID</summary>
        /// <typeparam name="T">A subclass of <see cref="TraktPerson"/> to be created</typeparam>
        /// <param name="personId">The person ID</param>
        /// <param name="personIdType">The person ID type</param>
        /// <returns>See summary</returns>
        public static T FromId <T>(int personId, TraktNumericPersonIdType personIdType) where T : TraktPerson
        {
            var ret = Activator.CreateInstance <T>();

            ret.Ids = new TraktPersonIds();

            switch (personIdType)
            {
            case TraktNumericPersonIdType.Trakt:
                ret.Ids.Trakt = personId;
                break;

            case TraktNumericPersonIdType.Tmdb:
                ret.Ids.Tmdb = personId;
                break;

            case TraktNumericPersonIdType.TvRage:
                ret.Ids.TvRage = personId;
                break;

            default:
                throw new ArgumentOutOfRangeException("personIdType");
            }

            return(ret);
        }
 /// <summary>Create an collection of <see cref="TraktPerson"/> subclass instances from a collecion of IDs</summary>
 /// <typeparam name="T">A subclass of <see cref="TraktPerson"/> to be created</typeparam>
 /// <param name="personIds">The person ID</param>
 /// <param name="personIdType">The person ID type</param>
 /// <returns>See summary</returns>
 public static IEnumerable <T> FromIds <T>(IEnumerable <int> personIds, TraktNumericPersonIdType personIdType) where T : TraktPerson
 {
     return(personIds == null ? null : personIds.Select(personId => FromId <T>(personId, personIdType)));
 }
 /// <summary>Create an instance of <see cref="TraktPerson"/> from an ID</summary>
 /// <param name="personId">The person ID</param>
 /// <param name="personIdType">The person ID type</param>
 /// <returns>See summary</returns>
 public static TraktPerson FromId(int personId, TraktNumericPersonIdType personIdType)
 {
     return(FromId <TraktPerson>(personId, personIdType));
 }
		/// <summary>Create an collection of <see cref="TraktPerson"/> instances from a collecion of IDs</summary>
		/// <param name="personIds">The person ID</param>
		/// <param name="personIdType">The person ID type</param>
		/// <returns>See summary</returns>
		public static IEnumerable<TraktPerson> FromIds(IEnumerable<int> personIds, TraktNumericPersonIdType personIdType) {
			return personIds == null ? null : personIds.Select(personId => FromId<TraktPerson>(personId, personIdType));
		}