Получить по отражению свойства атрибута класса - PullRequest
1 голос
/ 25 августа 2011

Я нахожу классы, наследуемые от интерфейса:

  var baseType = typeof(ICustomSerialization);
  Assembly assembly = baseType.Assembly;

   var subClass = assembly.GetTypes().Where(t => t.IsSubclassOf(baseType) );

Если у класса есть атрибут и параметр Имя:

    [CustomAttribute(Name="Soap")]
    class CustomSoapSerializer : ICustomSerialization

Это способ получить по отражению свойство Name этого атрибута?

1 Ответ

3 голосов
/ 31 августа 2011

Попробуйте это

public static class CustomAttributeProviderExtensions
{
    public static TAttribute[] GetCustomAttributes<TAttribute>(this ICustomAttributeProvider self)
        where TAttribute:Attribute
    {
        return (TAttribute[])self.GetCustomAttributes(typeof(TAttribute), true);
    }
}

И использование

var baseType = typeof(ICustomSerialization);
Assembly assembly = baseType.Assembly;

var subClass = assembly.GetTypes().Where(t => baseType.IsAssignableFrom(t))
    .Where(t=>t.GetCustomAttributes<CustomAttribute>().Any(x=>x.Name == "Soap"))
    .ToList();
...