Accedi Attributo personalizzato sul metodo da Castle Windsor Interceptor
-
22-09-2019 - |
Domanda
Sto cercando di accedere a un attributo personalizzato applicato a un metodo all'interno di un intercettore del castello, ad esempio:
[MyCustomAttribute(SomeParam = "attributeValue")]
public virtual MyEntity Entity { get; set; }
Utilizzando il seguente codice:
internal class MyInterceptor : IInterceptor
{
public void Intercept(IInvocation invocation)
{
if (invocation.Method.GetCustomAttributes(typeof(MyCustomAttribute), true) != null)
{
//Do something
}
}
}
L'Interceptor sta sparando OK quando viene chiamato il metodo ma questo codice non restituisce l'attributo personalizzato. Come posso raggiungere questo obiettivo?
Soluzione 3
Penso di averlo capito - è a causa della differenza tra la proprietà e il metodo. È il metodo GET_ che innesca l'interceptor, e questo non è decorato con l'attributo della proprietà principale.
Altri suggerimenti
Provare Attribute.GetCustomAttribute(...)
Metodo statico per questo. È bizzarro ma questi due metodi restituiscono diversi risultati a volte per qualche strana ragione.
Provare
private static Attribute getMyCustomAttribute(IInvocation invocation)
{
var methodInfo = invocation.MethodInvocationTarget;
if (methodInfo == null)
{
methodInfo = invocation.Method;
}
return Attribute.GetCustomAttribute(methodInfo, typeof(MyCustomAttribute), true);
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow