que tienen una enumeración de atributos bandera que está detrás de un servicio web de la siguiente manera:banderas con los servicios web
[Serializable,Flags]
public enum AccessLevels
{
None = 0,
Read = 1,
Write = 2,
Full = Read | Write
}
Mi problema es el consumo de mi servicio web no tiene los valores constantes originales de la enumeración. El lado del cliente clase proxy resultante tiene algo que equivale a esto:
{
None = 1,
Read = 2,
Write = 4,
Full = 8
}
Y así, cuando el consumidor está verificando "lectura" que esto es falso, incluso cuando "TestItem" es "completo"
((testItem & Svc.Read) == Svc.Read)
¿Cómo puedo proporcionar banderas correctamente sobre un servicio web?
EDIT:
De acuerdo con el artículo this puede que no sea posible hacer lo que estoy buscando hacer. Ivan Krivyakov afirma
imperfecta Transparencia de enumeraciones
Resulta que las enumeraciones no son tan transparente como nos gustaría que fueran. Hay tres temas pegajosos:
- Si el código del lado del servidor declara una enumeración y asigna valores específicos numéricos a sus miembros, estos valores no serán visibles para el cliente.
- Si el código del lado del servidor declara un [Banderas] enumeración con "compuesto" enmascarar valores (como en Blanco = Rojo | Green | Azul), no se refleja adecuadamente en el lado cliente.
- Si el servidor o el cliente transmite un valor "ilegal" que está fuera de el alcance de la enumeración, provoca una excepción en XML de-serializer en el del otro lado.
Así que me pregunto si esto es solo una limitación y no es posible.
Estoy pensando que esta es la ruta que puedo tomar aquí. Sin embargo, me gustaría poder tener la opción "Ninguno" explicada para mis usuarios. – Brawndo