private void InitializeHelper() { Type configurableType = MayhemEntry.Instance.ConfigurableType; Type[] interfaceTypes = GetType().GetInterfaces(); foreach (Type interfaceType in interfaceTypes) { if (interfaceType.Equals(configurableType)) { HasConfig = true; break; } } object[] attList = GetType().GetCustomAttributes(typeof(MayhemModuleAttribute), true); if (attList.Length > 0) { MayhemModuleAttribute att = attList[0] as MayhemModuleAttribute; Name = att.Name; Description = att.Name; } }
internal void TryAdd(Assembly assembly) { try { if (assembly != null) { // Go through all the public classes in the assembly foreach (Type type in assembly.GetExportedTypes()) { // If it's parent class is the type we want // and it implements the correct moduleType if (type.IsSubclassOf(typeof(T)) && !type.IsAbstract) { object[] attList = type.GetCustomAttributes(typeof(MayhemModuleAttribute), true); if (attList.Length > 0) { MayhemModuleAttribute att = attList[0] as MayhemModuleAttribute; // Add it to our final list Add(new ModuleType(type, att.Name, att.Description)); } else { // TODO: Do something to tell the developer the module has an error // throw new Exception("Module does not have MayhemModuleAttribute attribute set:\n" + type.FullName); } } allTypes.Add(type); } } } catch { // Swallow } }