solr - recorrer - Indice el valor de un Enum, no de la cadena
pasar enum como parametro c# (2)
¿Es posible indexar el valor de un Enum en lugar de su representación de cadena utilizando Solrnet?
Digamos que tengo que seguir enum:
[Serializable]
[Flags]
public enum Gender
{
Male = 0,
Female = 1
}
y agregue un atributo solr a la propiedad Gender
de una clase de User
:
[SolrField("gender")]
public virtual Gender Gender { get; set; }
Si indico la entidad usando:
solr.Add(user)
luego indexará ''Male'' como género en lugar de 0. ¿Es posible tenerlo en su lugar?
Editar: Preferiría no agregar una propiedad adicional para esto, como propone Ondrej.
Prueba esto:
[SolrField("gender")]
public int GenderAsInt
{
get { return (int) Gender; }
set { Gender = (Gender) value; }
}
public virtual Gender Gender { get; set; }
También tenga en cuenta que declarar su enumeración como [Flags]
no tiene mucho sentido:
- Difícilmente habrá alguien tanto
Male
comoFemale
-
Male
se interpretará como el valor predeterminado con respecto a los valores actuales de los campos enum
Puede hacer esto implementando ISolrFieldSerializer . Si es del tipo IsEnum , serializar mediante conversión a int. De lo contrario, delegue en DefaultFieldSerializer . Use los otros serializadores de campo para referencia.
La conexión de su serializador de campo depende del contenedor IoC seleccionado, revise la documentación del contenedor.