Yan Cui
I help clients go faster for less using serverless technologies.
Another good question on StackOverflow, and even better answer from Steven (miles better than what I managed!), the question was around how to implement an extension method to check whether a certain method has a particular attribute applied to it, mainly for the purpose of unit testing.
In his answer, Steven provided a couple of useful extension methods to get the metadata of a method using lambda expression and then check whether an attribute with the specified type has been applied to it:
public static MethodInfo GetMethod<T>(this T instance, Expression<Func<T, object>> methodSelector) { // Note: this is a bit simplistic implementation. It will // not work for all expressions. return ((MethodCallExpression)methodSelector.Body).Method; } public static MethodInfo GetMethod<T>(this T instance, Expression<Action<T>> methodSelector) { return ((MethodCallExpression)methodSelector.Body).Method; } public static bool HasAttribute<TAttribute>(this MemberInfo member) where TAttribute : Attribute { var attributes = member.GetCustomAttributes(typeof(TAttribute), true); return attributes.Length > 0; }
Nice, eh? I thought so too! Don’t forget to give him some much deserved up vote!
Whenever you’re ready, here are 3 ways I can help you:
- Production-Ready Serverless: Join 20+ AWS Heroes & Community Builders and 1000+ other students in levelling up your serverless game.
- Consulting: If you want to improve feature velocity, reduce costs, and make your systems more scalable, secure, and resilient, then let’s work together and make it happen.
- Join my FREE Community on Skool, where you can ask for help, share your success stories and hang out with me and other like-minded people without all the negativity from social media.