brunobritodev / AspNetCore.IQueryable.Extensions

LINQ extensions to help build IQueryAble Expressions
MIT License
159 stars 29 forks source link

Inconsistência no IQueryableExtension utilizando propriedade do tipo Guid #5

Closed WelingtonGadelha closed 2 years ago

WelingtonGadelha commented 2 years ago

Utilizando a biblioteca, verifiquei que não é possível realizar filtro com propriedade do tipo Guid, de modo que realizei uma análise mais a fundo e constatei que o IQueryableExtension não realiza a consulta. Isto porque a biblioteca possui um método que verifica se a propriedade é um objeto através do Enum TypeCode. Ou seja, quando é passado uma propriedade Guid, a biblioteca entende que está sendo recebido um object e não uma propriedade.

File: PrimitiveExtensions.cs

public static bool IsPropertyObject(this PropertyInfo property, object value)
{
    return Convert.GetTypeCode(property.GetValue(value, null)) == TypeCode.Object;
}

Sugestão Código de correção File: PrimitiveExtensions.cs

public static bool IsPropertyObject(this PropertyInfo property, object value)
{
    var isObject = Convert.GetTypeCode(property.GetValue(value, null)) == TypeCode.Object;
    if (isObject && IsPropertyGuid(property, value))
        return false;

    return isObject;
}
public static bool IsPropertyGuid(this PropertyInfo property, object value)
{
    var propertyValue = property.GetValue(value, null);
    if (propertyValue == null) return false;
    return propertyValue.GetType().Name == nameof(Guid);
}
github-actions[bot] commented 2 years ago

:tada: This issue has been resolved in version 6.0.0 :tada:

The release is available on GitHub release

Your semantic-release bot :package::rocket:

brunobritodev commented 2 years ago

Havia um problema em como diferenciar guid de object. Problema resolvido!