diff --git a/Octokit.Tests.Conventions/Exception/MissingPublicParameterlessCtorException.cs b/Octokit.Tests.Conventions/Exception/MissingPublicParameterlessCtorException.cs
new file mode 100644
index 00000000..806c70d0
--- /dev/null
+++ b/Octokit.Tests.Conventions/Exception/MissingPublicParameterlessCtorException.cs
@@ -0,0 +1,11 @@
+using System;
+
+namespace Octokit.Tests.Conventions
+{
+ public class MissingPublicParameterlessCtorException : Exception
+ {
+ public MissingPublicParameterlessCtorException(Type modelType)
+ : base(string.Format("Model type '{0}' is missing a Public Parameterless Constructor required by SimpleJson Deserializer.", modelType.FullName))
+ { }
+ }
+}
\ No newline at end of file
diff --git a/Octokit.Tests.Conventions/ModelTests.cs b/Octokit.Tests.Conventions/ModelTests.cs
index 1d3f5e16..7da1fcec 100644
--- a/Octokit.Tests.Conventions/ModelTests.cs
+++ b/Octokit.Tests.Conventions/ModelTests.cs
@@ -37,6 +37,18 @@ namespace Octokit.Tests.Conventions
}
}
+ [Theory]
+ [MemberData("ResponseModelTypes")]
+ public void AllResponseModelsHavePublicParameterlessCtors(Type modelType)
+ {
+ var ctor = modelType.GetConstructor(Type.EmptyTypes);
+
+ if (ctor == null || !ctor.IsPublic)
+ {
+ throw new MissingPublicParameterlessCtorException(modelType);
+ }
+ }
+
[Theory]
[MemberData("ResponseModelTypes")]
public void ResponseModelsHaveGetterOnlyProperties(Type modelType)
diff --git a/Octokit.Tests.Conventions/Octokit.Tests.Conventions.csproj b/Octokit.Tests.Conventions/Octokit.Tests.Conventions.csproj
index e06a67b8..412724b7 100644
--- a/Octokit.Tests.Conventions/Octokit.Tests.Conventions.csproj
+++ b/Octokit.Tests.Conventions/Octokit.Tests.Conventions.csproj
@@ -67,6 +67,7 @@
+
diff --git a/Octokit/Models/Response/PunchCard.cs b/Octokit/Models/Response/PunchCard.cs
index 4fdb5d79..02c0bdec 100644
--- a/Octokit/Models/Response/PunchCard.cs
+++ b/Octokit/Models/Response/PunchCard.cs
@@ -10,6 +10,9 @@ namespace Octokit
[DebuggerDisplay("{DebuggerDisplay,nq}")]
public class PunchCard
{
+ public PunchCard()
+ { }
+
public PunchCard(IEnumerable> punchCardData)
{
Ensure.ArgumentNotNull(punchCardData, "punchCardData");
diff --git a/Octokit/Models/Response/RepositoryLanguage.cs b/Octokit/Models/Response/RepositoryLanguage.cs
index 44fd9c7a..c1d762eb 100644
--- a/Octokit/Models/Response/RepositoryLanguage.cs
+++ b/Octokit/Models/Response/RepositoryLanguage.cs
@@ -7,6 +7,9 @@ namespace Octokit
[DebuggerDisplay("{DebuggerDisplay,nq}")]
public class RepositoryLanguage
{
+ public RepositoryLanguage()
+ { }
+
public RepositoryLanguage(string name, long numberOfBytes)
{
Name = name;