static int PlaceInMessageHierarchy(Type type) { if (type.IsInterface) { return type.GetInterfaces().Length; } var result = 0; while (type.BaseType != null) { result++; type = type.BaseType; } return result; }