Yan Cui
I help clients go faster for less using serverless technologies.
When you have a generic interface such as:
public interface IInitializable<T> { bool IsInitialized { get; } void Initialize(T initObject); }
It’s easy to check whether a given instance implements the IInitializable interface with a specific T:
public class IntInitializable : IInitializable<int> { public bool IsInitialized { get; private set; } public void Initialize(int initObject) { IsInitialized = true; } } … var intInit = new IntInitializable(); Console.WriteLine(intInit is IInitializable<int>); // outputs TRUE
But what if you want to find out if a type implements the IInitializable interface of an arbitrary T? You won’t be able to simply get away with this:
Console.WriteLine(intInit is IInitializable<>); // doesn't compile
Instead, you can do something like this:
var isIInitializable = intInit.GetType() .GetInterfaces() .Any(i => i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IInitializable<>));
And if you want to find out what T is at runtime:
var t = intInit.GetType() .GetInterfaces() .First(i => i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IInitializable<>)) .GetGenericArguments() .First();
Whenever you’re ready, here are 4 ways I can help you:
- If you want a one-stop shop to help you quickly level up your serverless skills, you should check out my Production-Ready Serverless workshop. Over 20 AWS Heroes & Community Builders have passed through this workshop, plus 1000+ students from the likes of AWS, LEGO, Booking, HBO and Siemens.
- If you want to learn how to test serverless applications without all the pain and hassle, you should check out my latest course, Testing Serverless Architectures.
- If you’re a manager or founder and want to help your team move faster and build better software, then check out my consulting services.
- If you just want to hang out, talk serverless, or ask for help, then you should join my FREE Community.