private void AssertVersion(CfgFile data, int major = 1, int minor = 0) { //don't check on the given version if fields are clear but on the next one. minor++; Version v = data.GetType().Assembly.GetName().Version; for (; major <= v.Major; major++) { for (; minor <= v.Minor; minor++) { string methodName = $"AssertVersion_{major}_{minor}"; var methodInfo = GetType().GetMethod(methodName, new[] { data.GetType() }); Assert.IsNotNull(methodInfo, $"Version guard method: \"{methodName}\" not found"); methodInfo.Invoke(this, new[] { data }); } } }