/// <summary> /// Check whether the product build date of the provided assemblies /// exceeded the <see cref="License.Expiration"/> date. /// </summary> /// <param name="validationChain">The current <see cref="IStartValidationChain"/>.</param> /// <param name="assemblies">The list of assemblies to check.</param> /// <returns>An instance of <see cref="IStartValidationChain"/>.</returns> public static IValidationChain ProductBuildDate(this IStartValidationChain validationChain, Assembly[] assemblies) { var validationChainBuilder = (validationChain as ValidationChainBuilder); var validator = validationChainBuilder.StartValidatorChain(); validator.Validate = license => assemblies.All( asm => asm.GetCustomAttributes(typeof (AssemblyBuildDateAttribute), false) .Cast<AssemblyBuildDateAttribute>() .All(a => a.BuildDate < license.Expiration)); validator.FailureResult = new LicenseExpiredValidationFailure() { Message = "Licensing for this product has expired!", HowToResolve = @"Your license is expired. Please contact your distributor/vendor to renew the license." }; return validationChainBuilder; }