Hola a todos.
Tengo 1 dll que implementa una clase de atributo así:
using System;
using System.Collections.Generic;
using System.Text;
namespace Atributos{
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
public class Prueba: Attribute{
public Prueba(){}
}
}
Uso ese atributo en otra clase, en otra dll, de la siguiente manera
using Atributos;
namespace Clases{
[Atributos.Prueba()]
public class Ejemplo(){
}
}
Dinámicamente cargo los assemblies en mi aplicación, y obtengo los atributos
de las clases de los assemblies:
Using Atributos;
private void PruebaAtributos(Type t){
Attribute[] Atts = Attribute.GetCustomAttributes(t);
foreach (Attribute Att in Atts){
if (Att is Atributos.Prueba){
Atributos.Prueba p = (Atributos.Prueba)Att;
}
}
No entiendo por qué, pero el código no entra en el if, es decir, falla la
validación Att is Prueba... Si fuerzo al depurador para que haga el casting
de dentro del if, me salta la siguiente excepción:
"Se detectó InvalidCastException: No se puede convertir un objeto de tipo
'Atributos.Prueba' al tipo ''Atributos.Prueba'."
¿Me podéis dar alguna pista de qué está pasando? He comprobado las dll, las
he limpiado del disco (.pdb y .dll), he regenerado todos los proyectos, he
quitado las referencias y las he vuelto a añadir, pero el error sigue ahí y
no sé que hacer con él.
Gracias y un saludo
Leer las respuestas