Browse Source

feat: add STRDIAG010

IXLLEGACYIXL 1 year ago
parent
commit
46c2012b1f
1 changed files with 53 additions and 0 deletions
  1. 53 0
      en/diagnostics/STRDIAG010.md

+ 53 - 0
en/diagnostics/STRDIAG010.md

@@ -0,0 +1,53 @@
+# Diagnostics Warning STRDIAG010
+
+> The Type '{0}' doesn't have a public parameterless constructor, which is needed for Serialization
+
+## Explanation
+
+By default, Stride serializers only support types that have a parameterless constructor.
+If no constructor is defined then the default constructor counts as parameterless constructor.
+Primary Constructors with parameters count as non parameterless constructor.
+Structs have per default a parameterless constructor so this warning will never appear on a struct. 
+
+## Example
+
+The following example generates STRDIAG010:
+
+```csharp
+using Stride.Core;
+
+[DataContract]
+public class InvalidSTRDIAG010
+{
+    // no parameterless constructor available so it will throw STRDIAG010
+    public InvalidSTRDIAG010(int x, int y)
+    {
+
+    }
+}
+```
+
+The following example doesn't generate STRDIAG010:
+
+```csharp
+public class ValidSTRDIAG010
+{
+    // will be ignored by the serializers
+    public ValidSTRDIAG010(int x, int y)
+    {
+    }
+    // this parameterless constructor will be used by the serializers
+    public ValidSTRDIAG010()
+    {
+
+    }
+}
+```
+
+## Solution
+
+To resolve the warning, add a parameterless constructor that can be used by the serializers. Or remove the @Stride.Core.DataContractAttribute so the class gets entirely ignored by the serialization system.
+
+## References
+
+- [Serialisation](../manual/scripts/serialization.md)