summaryrefslogtreecommitdiff
path: root/src/SMAPI.ModBuildConfig.Analyzer
diff options
context:
space:
mode:
Diffstat (limited to 'src/SMAPI.ModBuildConfig.Analyzer')
-rw-r--r--src/SMAPI.ModBuildConfig.Analyzer/NetFieldAnalyzer.cs11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/SMAPI.ModBuildConfig.Analyzer/NetFieldAnalyzer.cs b/src/SMAPI.ModBuildConfig.Analyzer/NetFieldAnalyzer.cs
index 7c8b804e..72d3bbf8 100644
--- a/src/SMAPI.ModBuildConfig.Analyzer/NetFieldAnalyzer.cs
+++ b/src/SMAPI.ModBuildConfig.Analyzer/NetFieldAnalyzer.cs
@@ -22,6 +22,9 @@ namespace StardewModdingAPI.ModBuildConfig.Analyzer
/// <summary>The full name for Stardew Valley's <c>Netcode.NetList</c> type.</summary>
private readonly string NetListTypeFullName = "Netcode.NetList";
+ /// <summary>The full name for Stardew Valley's <c>Netcode.NetCollection</c> type.</summary>
+ private readonly string NetCollectionTypeFullName = "Netcode.NetCollection";
+
/// <summary>Maps net fields to their equivalent non-net properties where available.</summary>
private readonly IDictionary<string, string> NetFieldWrapperProperties = new Dictionary<string, string>
{
@@ -232,6 +235,14 @@ namespace StardewModdingAPI.ModBuildConfig.Analyzer
return false;
}
+ // collection conversion to an implemented interface is OK
+ if (AnalyzerUtilities.GetConcreteTypes(typeInfo.Type).Any(p => p.ToString().StartsWith(this.NetCollectionTypeFullName))) // StartsWith to ignore generics
+ {
+ string toType = typeInfo.ConvertedType.ToString();
+ if (toType.StartsWith(typeof(IEnumerable<>).Namespace) || toType == typeof(IEnumerable).FullName)
+ return false;
+ }
+
// avoid any other conversions
return true;
}