diff --git a/tests/generator-Tests/Unit-Tests/CodeGeneratorTests.cs b/tests/generator-Tests/Unit-Tests/CodeGeneratorTests.cs
index 69d1b6455..df1359fff 100644
--- a/tests/generator-Tests/Unit-Tests/CodeGeneratorTests.cs
+++ b/tests/generator-Tests/Unit-Tests/CodeGeneratorTests.cs
@@ -611,6 +611,36 @@ public void ObsoletedOSPlatformAttributeUnneededSupport ()
Assert.True (writer.ToString ().Contains ("[global::System.Obsolete (@\"This method has an invalid deprecated-since!\")]"), writer.ToString ());
}
+ [Test]
+ public void ObsoletedOSPlatformAttributeInterfaceInfrastructureSupport ()
+ {
+ var xml = @"
+
+
+
+ ";
+
+ options.UseObsoletedOSPlatformAttributes = true;
+
+ var gens = ParseApiDefinition (xml);
+ var iface = gens.OfType ().Single (g => g.Name == "IMyType");
+
+ generator.Context.ContextTypes.Push (iface);
+ var invoker = new InterfaceInvokerClass (iface, options, generator.Context);
+ var extensions = new InterfaceExtensionsClass (iface, iface.Name, options);
+ generator.Context.ContextTypes.Pop ();
+
+ // Ensure attribute was added to invoker class
+ var invoker_attribute = invoker.Attributes.OfType ().Single ();
+ Assert.AreEqual ("This interface was deprecated in API-25", invoker_attribute.Message);
+ Assert.AreEqual (25, invoker_attribute.Version);
+
+ // Ensure attribute was added to extensions class
+ var extensions_attribute = invoker.Attributes.OfType ().Single ();
+ Assert.AreEqual ("This interface was deprecated in API-25", extensions_attribute.Message);
+ Assert.AreEqual (25, extensions_attribute.Version);
+ }
+
[Test]
public void ObsoleteGetterOnlyProperty ()
{
diff --git a/tools/generator/SourceWriters/InterfaceExtensionsClass.cs b/tools/generator/SourceWriters/InterfaceExtensionsClass.cs
index edf5ac0d4..378c7323a 100644
--- a/tools/generator/SourceWriters/InterfaceExtensionsClass.cs
+++ b/tools/generator/SourceWriters/InterfaceExtensionsClass.cs
@@ -18,6 +18,8 @@ public InterfaceExtensionsClass (InterfaceGen iface, string declaringTypeName, C
IsStatic = true;
IsPartial = true;
+ SourceWriterExtensions.AddObsolete (Attributes, iface.DeprecatedComment, opt, iface.IsDeprecated, deprecatedSince: iface.DeprecatedSince);
+
foreach (var method in iface.Methods.Where (m => !m.IsStatic)) {
if (method.CanHaveStringOverload) {
// TODO: Don't allow obsolete here to match old generator.
diff --git a/tools/generator/SourceWriters/InterfaceInvokerClass.cs b/tools/generator/SourceWriters/InterfaceInvokerClass.cs
index 3bde0695a..c0e39419e 100644
--- a/tools/generator/SourceWriters/InterfaceInvokerClass.cs
+++ b/tools/generator/SourceWriters/InterfaceInvokerClass.cs
@@ -32,6 +32,8 @@ public InterfaceInvokerClass (InterfaceGen iface, CodeGenerationOptions opt, Cod
MemberType = (!ji) ? null : (MemberTypes?) MemberTypes.TypeInfo,
});
+ SourceWriterExtensions.AddObsolete (Attributes, iface.DeprecatedComment, opt, iface.IsDeprecated, deprecatedSince: iface.DeprecatedSince);
+
Fields.Add (new PeerMembersField (opt, iface.RawJniName, $"{iface.Name}Invoker", false));
if (!ji) {