Nej, ikke mig bekendt. Som jeg har forstået det, så bruger man attributterne til at dekorere metoder sådan at man via reflection kan få nogle ekstra informationer.
et eller andet GetType giver en Type Type GetMethods giver MethodInfo[] dem itererer man over MethodInfo GetCustomAttributes giver Object[] dem itererer man over er der en matchende attribut så MethodInfo GetParameters giver ParemeterInfo[] som du så kan iterere over
Ja, faktisk... så tror heller ikke selv helt på det. Men ville gerne kunne gå ind og kigge på parametrene for kaldet og så f.eks. "afbryde" kaldet hvis parametrene ikke er gyldige. Lyder nok lidt mærkeligt - men der er også mere i det end som så :-)
public class IntMath { public static int add(int a, int b) { return (a + b); } public static int subtract(int a, int b) { return (a - b); } public static int multiply(int a, int b) { return (a * b); } public static int divide(int a, int b) { return (a / b); } }
public class DoubleMath { public static double add(double a, double b) { return (a + b); } public static double subtract(double a, double b) { return (a - b); } public static double multiply(double a, double b) { return (a * b); } public static double divide(double a, double b) { return (a / b); } }
aspect Check { pointcut mathcheck() : call(public * *.divide(*, *)); before() : mathcheck() { Object[] o = thisJoinPoint.getArgs(); String divtyp = o[1].getClass().getName(); if(divtyp.equals("java.lang.Integer")) { if(((Integer)o[1]).intValue() == 0) { System.out.println("About to divide by zero"); } } if(divtyp.equals("java.lang.Double")) { if(((Double)o[1]).doubleValue() == 0.0) { System.out.println("About to divide by zero"); } } } }
desværre er der mig bekendt ikke nogle AOP frameworks for .NET som er ligeså mature som AspectJ til Java.
det bedste jeg har set (men ikke prøvet at kode med endnu) er AspectDNG.
ContextBoundModel var faktisk lige hvad der skulle til for at løse mit problem, tak :-)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.