none
AttributeUsage con Enum RRS feed

  • Pregunta

  • Buenos días, primero que nada quiero darles las gracias de ante mano por el apoyo y posibles sugerencias mi problema es el siguiente, me construí una clase de atributos para los enumerados porque necesito desde el cliente leer ese atributo, el caso es que con reflection una vez que monto esto en mi servicio WCF (usando MessageContract) no logro conseguir ese atributo que le agregue (hice un laboratorio donde lo monte solito directamente en una clase y si logro leer sus atributos). Mi codigo es algo asi:

    [AttributeUsage(AttributeTargets.Field)]
            [Serializable]
            sealed class AttributesEnum : Attribute
            {
                public string Description
                {
                    get;
                    set;
                }
    
                public AttributesEnum(string description)
                {
                    Description = description;
                }
            }
    
    
            /// <summary>
            /// Identifica cada uno de los sistemas o aplicaciones que pueden consumir los servicios
            /// </summary>
            [DataContract(Name = "SystemType", Namespace = "http://localhost/base/data/v1.0")]
            [Serializable]
            public enum SystemType : int
            {
                [EnumMember()]
                [AttributesEnum("Otra Aplicación")]
                Another = 1,
                [EnumMember()]
                [AttributesEnum("Visor de Documentos")]
                ViewDocument = 79,
                [EnumMember()]
                [AttributesEnum("Core de Negocio")]
                CoreBusiness = 89,
            }
    
    

    Y leo la descripción de los atributos así:

    public static class EnumExtensions
        {
            public static string GetDescription(this Enum _this)
            {
                object[] att = _this.GetType()
                    .GetField(_this.ToString())
                    .GetCustomAttributes(typeof(AttributesEnum), false);
                return (att != null) ? (att[0] as AttributesEnum).Description : null;
    
            }
        }

    lunes, 3 de septiembre de 2012 15:40

Todas las respuestas

  • pero este SystemType luego como es que lo estas usando ?

    porque no le veo la relacion a esto con un servicio de WCF

    es mas la definicion del atributo y del enum deberias declararlo en un proyecto separado y referenciarlo tanto del cliente como del server del servicio de wcf

    sino tambien validar si al crear el proxy del servicio en el cliente el enum aun conserva estos atuibutos, porque quizas los pierda en el proxy por eso en el cliente no puedes usar esta tecnica

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    martes, 4 de septiembre de 2012 4:44
  • Saludos, tiene que ver con el servicio WCF porque dentro del DataContract hay un objeto utilizado para el Result que tiene una propiedad de este tipo SystemType 
    martes, 4 de septiembre de 2012 14:06