Можно ли найти класс, помеченный пользовательским атрибутом на основе значения, данного этому атрибуту?
В принципе, у меня есть классы, которые выглядят так -
[MyAttr("CODE")]
public class MyClass() {}
Оттуда я получаю все классы (Типы) -
var c = Assembly.GetExecutingAssembly().GetTypes().Where
(
t => t.IsClass &&
t.Namespace == (typeof(AbstractParentClass)).Namespace &&
t.IsSubclassOf(typeof(AbstractParentClass))
);
Это все, кажется, работает. c
содержит все соответствующие классы. Теперь мне нужно получить класс из c
, который имеет атрибут MyAttr
и значение «CODE». Значение доступно через свойство в MyAttr с именем Id
.
Это была моя попытка -
var message = from m in c
from a in m.GetCustomAttributes(typeof(MyAttr), false)
where ((MyAttr)a).Id == "CODE"
select m;
Это не сработало. Итак, реальный вопрос в том, возможно ли это вообще, и если да, то что нужно изменить, чтобы получить соответствующий класс (и создать его экземпляр).
Мне нужно добавить два настраиваемых фильтра для FORM_LOGIN_FILTER, например . Я ожидаю, что последовательности фильтров: Но выше приведёт к ошибке конфигурации.
Итак, кто-нибудь знает, как написать правильный конфиг?
Спасибо! <custom-filter after="FORM_LOGIN_FILTER" ref="myUsernamePasswordAuthenticationFilter" />
<custom-filter after="FORM_LOGIN_FILTER" ref="myUsernamePasswordAuthenticationFilter2" />
1. Предопределите FORM_LOGIN_FILTER
2. myUsernamePasswordAuthenticationFilter
3. myUsernamePasswordAuthenticationFilter2
Сделайте следующее:
<custom-filter after="FORM_LOGIN_FILTER" ref="myUsernamePasswordAuthenticationFilter" />
<custom-filter before="BASIC_AUTH_FILTER" ref="myUsernamePasswordAuthenticationFilter2" />
Это должно разместить их там, где вы хотите.