diff options
author | Jesse Plamondon-Willard <github@jplamondonw.com> | 2017-03-26 20:15:48 -0400 |
---|---|---|
committer | Jesse Plamondon-Willard <github@jplamondonw.com> | 2017-03-26 20:15:48 -0400 |
commit | 04cae4ef4608352329c746e2163b2a9356b063f6 (patch) | |
tree | b665731c0eb9666cbad87628e9e7821d28a67548 /src/StardewModdingAPI/Program.cs | |
parent | 3530f6f67c33dde69ac11079a9f9a43518fbb2b4 (diff) | |
download | SMAPI-04cae4ef4608352329c746e2163b2a9356b063f6.tar.gz SMAPI-04cae4ef4608352329c746e2163b2a9356b063f6.tar.bz2 SMAPI-04cae4ef4608352329c746e2163b2a9356b063f6.zip |
fix SMAPI not recognising Mod instances that don't subclass Mod directly (#252)
Diffstat (limited to 'src/StardewModdingAPI/Program.cs')
-rw-r--r-- | src/StardewModdingAPI/Program.cs | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/StardewModdingAPI/Program.cs b/src/StardewModdingAPI/Program.cs index 25605148..276b66ce 100644 --- a/src/StardewModdingAPI/Program.cs +++ b/src/StardewModdingAPI/Program.cs @@ -450,9 +450,15 @@ namespace StardewModdingAPI // validate assembly try { - if (modAssembly.DefinedTypes.Count(x => x.BaseType == typeof(Mod)) == 0) + int modEntries = modAssembly.DefinedTypes.Count(type => typeof(Mod).IsAssignableFrom(type) && !type.IsAbstract); + if(modEntries == 0) { - this.Monitor.Log($"{skippedPrefix} because its DLL has no 'Mod' subclass.", LogLevel.Error); + this.Monitor.Log($"{skippedPrefix} because its DLL has no '{nameof(Mod)}' subclass.", LogLevel.Error); + continue; + } + if (modEntries > 1) + { + this.Monitor.Log($"{skippedPrefix} because its DLL contains multiple '{nameof(Mod)}' subclasses.", LogLevel.Error); continue; } } @@ -466,7 +472,7 @@ namespace StardewModdingAPI try { // get implementation - TypeInfo modEntryType = modAssembly.DefinedTypes.First(x => x.BaseType == typeof(Mod)); + TypeInfo modEntryType = modAssembly.DefinedTypes.First(type => typeof(Mod).IsAssignableFrom(type) && !type.IsAbstract); Mod mod = (Mod)modAssembly.CreateInstance(modEntryType.ToString()); if (mod == null) { |