/// <summary> /// Casts an identity instance to a more specific entity type. /// </summary> /// <param name="identity">The input identity.</param> /// <typeparam name="TCast">The entity type for which to cast the identity.</typeparam> public static IIdentity <TCast> Cast <TCast>(this IIdentity identity) where TCast : IEntity { if (identity == null) { throw new ArgumentNullException(nameof(identity)); } if (!identity.EntityType.IsAssignableFrom(typeof(TCast))) { string message = String.Format(Resources.ExceptionMessages.CastTypeMustImplementEntityTypeFormat, identity.EntityType.Name, typeof(TCast).Name); throw new ArgumentException(message, nameof(identity)); } return(Identity.Create <TCast>(identity.Value)); }
/// <summary> /// Gets the identity for a given entity instance. /// </summary> /// <returns>The identity.</returns> /// <param name="entity">Entity.</param> /// <typeparam name="TEntity">The entity type.</typeparam> public static IIdentity <TEntity> GetIdentity <TEntity>(this TEntity entity) where TEntity : IEntity { return((IIdentity <TEntity>)Identity.Create(entity.GetType(), entity.GetIdentityType(), entity.IdentityValue)); }