public ErrorCollection Validate <TDomainRule, TParameter>(TEntity entity, TParameter parameter) where TDomainRule : Rule <TEntity, TParameter> where TParameter : struct { var constructor = _objectInfo.GetConstructor(typeof(TDomainRule), typeof(TEntity)); var domainRule = _objectInfo.CreateInstance <TDomainRule>(constructor, entity); return(domainRule.Validate(parameter)); }
internal override async Task BuildValueAsync(DbDataReader reader, CancellationToken cancellationToken) { if (await reader.ReadAsync(cancellationToken).ConfigureAwait(false)) { if (TypeConverter.IsNotEntityAndConvertible(s_resultType)) { ITypeConverter typeConverter = TypeConverter.For(s_resultType) ?? TypeConverter.Default; Value = (T)typeConverter.ConvertFromDbValue(reader, 0, s_resultType); } else { IObjectInfo objectInfo = ObjectInfo.For(s_resultType); Value = (T)objectInfo.CreateInstance(reader); } HasValue = true; if (await reader.ReadAsync(cancellationToken).ConfigureAwait(false)) { throw new MicroLiteException(ExceptionMessages.Include_SingleRecordExpected); } _callback?.Invoke(this); } }
internal override async Task BuildValueAsync(DbDataReader reader, CancellationToken cancellationToken) { if (TypeConverter.IsNotEntityAndConvertible(s_resultType)) { ITypeConverter typeConverter = TypeConverter.For(s_resultType) ?? TypeConverter.Default; while (await reader.ReadAsync(cancellationToken).ConfigureAwait(false)) { var value = (T)typeConverter.ConvertFromDbValue(reader, 0, s_resultType); Values.Add(value); } } else { IObjectInfo objectInfo = ObjectInfo.For(s_resultType); while (await reader.ReadAsync(cancellationToken).ConfigureAwait(false)) { var instance = (T)objectInfo.CreateInstance(reader); Values.Add(instance); } } HasValue = Values.Count > 0; _callback?.Invoke(this); }