2011-06-19 23 views
5

Quiero almacenar información adicional en mis valores Enum y por lo tanto se me ocurrieron los Atributos. Como quiero que una sola propiedad lleve 1..n strings intenté hacer que el constructor de atributos aceptara un parámetro variable. De esta manera:El constructor con parámetros variables en la clase derivada de Atributo no funciona

[AttributeUsage(AttributeTargets.Enum, AllowMultiple = false, Inherited = false)] 
public class FileTypeAttribute : Attribute 
{ 
    public readonly string[] Extensions; 

    FileTypeAttribute(params string[] extensions) 
    { 
     this.Extensions = extensions; 
    } 
} 

Mi problema es que cuando estoy ahora tratando de hacer uso de mi propiedad mi compilador se queja y se va con el siguiente mensaje de error que realmente no entiendo:

public enum EFileType 
{ 
    [FileTypeAttribute("txt")] 
    TEXTFILE, 
    [FileTypeAttribute("jpg", "png")] 
    PICTURE 
} 

Da me:

'FileTypeAttribute' does not contain a constructor that takes '1' arguments y 'FileTypeAttribute' does not contain a constructor that takes '2' arguments

Podría alguien decirme por favor qué sucede esto ?

Por lo que recuerdo, no hay realmente una posibilidad de hacer enums un poco más "java'ish". Pero si me falta alguna alternativa, me alegraría saber de eso.

Respuesta

9

El constructor es implícitamente private - marcar explícitamente public:

public FileTypeAttribute(params string[] extensions) 
{ 
    this.Extensions = extensions; 
} 
+1

Jeeez .. ¿Qué es lo que dicen acerca de la madera y los árboles. Muchas gracias, hubiera perdido horas :) –

Cuestiones relacionadas