public bool CheckType(Type looptype) { if (looptype == null) { return(false); } if (RequiredVersionAttribute.TestComponent(looptype) == false) { Trace.WriteLine("RequiredVersionAttribute returned false for type " + looptype.FullName); return(false); } if (inspectioncallback != null) { inspectioncallback(looptype); } if (CheckType(looptype, TypeManage, mcallback)) { if (looptype != null && !ManagedTypes.Contains(looptype)) { ManagedTypes.Add(looptype); } return(true); } return(false); }
//task: loop through all custom attributes on the type. //for the RequiredVersionAttribute's, call SupportsVersion, plopping exceptions to Trace. //if all tests come back true, return true. if all tests come back false, return false. //if a test fails, return false. public static bool TestComponent(Type typecheck) { foreach (var iterate in typecheck.GetCustomAttributes(typeof(RequiredVersionAttribute), true)) { RequiredVersionAttribute rva = iterate as RequiredVersionAttribute; try { if (!rva.SupportsVersion()) { return(false); } } catch (ArgumentNullException exx) { return(false); } } return(true); }