public static bool IsSameOrSubclassOrImplementedOf(Type srcType, Type baseType) { if(srcType == null || baseType == null) return false; if(IsSameOrSubclassOf(srcType, baseType)) return true; if(baseType.IsInterface) return srcType.GetInterfaces().Any(intfType => intfType == baseType); return false; }
public void IsSameOrSubclassOrImplementOf_Test() { var deflate = new DeflateCompressor(); Assert.IsTrue(TypeTool.IsSameOrSubclassOrImplementedOf(deflate, typeof(ICompressor))); Assert.IsTrue(TypeTool.IsSameOrSubclassOrImplementedOf(typeof(GZipCompressor), typeof(ICompressor))); Assert.IsFalse(TypeTool.IsSameOrSubclassOrImplementedOf(typeof(Compressor), typeof(ICompressor))); }