diff --git a/src-examples/ProxyInterfaceConsumer/IAddress.cs b/src-examples/ProxyInterfaceConsumer/IAddress.cs
index 2343753..baa0980 100644
--- a/src-examples/ProxyInterfaceConsumer/IAddress.cs
+++ b/src-examples/ProxyInterfaceConsumer/IAddress.cs
@@ -2,7 +2,7 @@ using ProxyInterfaceGenerator;
namespace ProxyInterfaceConsumer
{
- [ProxyInterfaceGenerator.Proxy(typeof(Address), false, ProxyClassAccessibility.Public, new []{"Weird"})]
+ [Proxy(typeof(Address), false, ProxyClassAccessibility.Public, new []{"Weird"})]
public partial interface IAddress
{
}
diff --git a/tests/ProxyInterfaceSourceGeneratorTests/ProxyInterfaceSourceGeneratorTest.GenerateFiles_ForClassWithArray_Should_GenerateCorrectFiles.received.txt b/tests/ProxyInterfaceSourceGeneratorTests/ProxyInterfaceSourceGeneratorTest.GenerateFiles_ForClassWithArray_Should_GenerateCorrectFiles.received.txt
new file mode 100644
index 0000000..3cd00f2
--- /dev/null
+++ b/tests/ProxyInterfaceSourceGeneratorTests/ProxyInterfaceSourceGeneratorTest.GenerateFiles_ForClassWithArray_Should_GenerateCorrectFiles.received.txt
@@ -0,0 +1,117 @@
+[
+ {
+ HintName: ProxyInterfaceGenerator.Extra.g.cs,
+ Source:
+//----------------------------------------------------------------------------------------
+//
+// This code was generated by https://github.com/StefH/ProxyInterfaceSourceGenerator.
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//----------------------------------------------------------------------------------------
+
+using System;
+
+namespace ProxyInterfaceGenerator
+{
+ [AttributeUsage(AttributeTargets.Interface)]
+ internal sealed class ProxyAttribute : Attribute
+ {
+ public Type Type { get; }
+ public bool ProxyBaseClasses { get; }
+ public ProxyClassAccessibility Accessibility { get; }
+ public string[] MembersToIgnore { get; }
+
+ public ProxyAttribute(Type type) : this(type, false, ProxyClassAccessibility.Public)
+ {
+ }
+
+ public ProxyAttribute(Type type, bool proxyBaseClasses) : this(type, proxyBaseClasses, ProxyClassAccessibility.Public)
+ {
+ }
+
+ public ProxyAttribute(Type type, ProxyClassAccessibility accessibility) : this(type, false, accessibility)
+ {
+ }
+
+ public ProxyAttribute(Type type, bool proxyBaseClasses, ProxyClassAccessibility accessibility) : this(type, proxyBaseClasses, accessibility, Array.Empty())
+ {
+ }
+
+ public ProxyAttribute(Type type, bool proxyBaseClasses, ProxyClassAccessibility accessibility, string[] membersToIgnore)
+ {
+ Type = type;
+ ProxyBaseClasses = proxyBaseClasses;
+ Accessibility = accessibility;
+ MembersToIgnore = membersToIgnore;
+ }
+ }
+
+ [Flags]
+ internal enum ProxyClassAccessibility
+ {
+ Public = 0,
+
+ Internal = 1
+ }
+}
+ },
+ {
+ HintName: ProxyInterfaceSourceGeneratorTests.Source.IFoo.g.cs,
+ Source:
+//----------------------------------------------------------------------------------------
+//
+// This code was generated by https://github.com/StefH/ProxyInterfaceSourceGenerator.
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//----------------------------------------------------------------------------------------
+
+#nullable enable
+using System;
+
+namespace ProxyInterfaceSourceGeneratorTests.Source
+{
+ public partial interface IFoo
+ {
+ global::ProxyInterfaceSourceGeneratorTests.Source.Foo _Instance { get; }
+
+ global::ProxyInterfaceSourceGeneratorTests.Source.IFoo[] Foos { get; set; }
+
+ global::ProxyInterfaceSourceGeneratorTests.Source.IFoo[] DoSomethingAndGetAnArrayOfFoos();
+ }
+}
+#nullable restore
+ },
+ {
+ HintName: Error.g.cs,
+ Source:
+/*
+ProxyInterfaceCodeGenerator
+
+[Exception]
+System.InvalidOperationException: Sequence contains no elements
+ at System.Linq.ThrowHelper.ThrowNoElementsException()
+ at System.Linq.Enumerable.First[TSource](IEnumerable`1 source)
+ at System.Linq.ImmutableArrayExtensions.First[T](ImmutableArray`1 immutableArray)
+ at ProxyInterfaceSourceGenerator.FileGenerators.ProxyClassesGenerator.GenerateOperators(ClassSymbol targetClassSymbol, ProxyData proxyData) in {SolutionDirectory}src\ProxyInterfaceSourceGenerator\FileGenerators\ProxyClassesGenerator.cs:line 350
+ at ProxyInterfaceSourceGenerator.FileGenerators.ProxyClassesGenerator.CreateProxyClassCode(ProxyData pd, ClassSymbol targetClassSymbol, IReadOnlyList`1 extendsProxyClasses, String interfaceName, String className, String constructorName) in {SolutionDirectory}src\ProxyInterfaceSourceGenerator\FileGenerators\ProxyClassesGenerator.cs:line 82
+ at ProxyInterfaceSourceGenerator.FileGenerators.ProxyClassesGenerator.TryGenerateFile(ProxyData pd, FileData& fileData) in {SolutionDirectory}src\ProxyInterfaceSourceGenerator\FileGenerators\ProxyClassesGenerator.cs:line 46
+ at ProxyInterfaceSourceGenerator.FileGenerators.ProxyClassesGenerator.GenerateFiles()+MoveNext() in {SolutionDirectory}src\ProxyInterfaceSourceGenerator\FileGenerators\ProxyClassesGenerator.cs:line 23
+ at ProxyInterfaceSourceGenerator.ProxyInterfaceCodeGenerator.GenerateProxyClasses(GeneratorExecutionContext ctx, ProxySyntaxReceiver receiver, Boolean supportsNullable) in {SolutionDirectory}src\ProxyInterfaceSourceGenerator\ProxyInterfaceCodeGenerator.cs:line 101
+ at ProxyInterfaceSourceGenerator.ProxyInterfaceCodeGenerator.Execute(GeneratorExecutionContext context) in {SolutionDirectory}src\ProxyInterfaceSourceGenerator\ProxyInterfaceCodeGenerator.cs:line 51
+
+[StackTrace]
+ at System.Linq.ThrowHelper.ThrowNoElementsException()
+ at System.Linq.Enumerable.First[TSource](IEnumerable`1 source)
+ at System.Linq.ImmutableArrayExtensions.First[T](ImmutableArray`1 immutableArray)
+ at ProxyInterfaceSourceGenerator.FileGenerators.ProxyClassesGenerator.GenerateOperators(ClassSymbol targetClassSymbol, ProxyData proxyData) in {SolutionDirectory}src\ProxyInterfaceSourceGenerator\FileGenerators\ProxyClassesGenerator.cs:line 350
+ at ProxyInterfaceSourceGenerator.FileGenerators.ProxyClassesGenerator.CreateProxyClassCode(ProxyData pd, ClassSymbol targetClassSymbol, IReadOnlyList`1 extendsProxyClasses, String interfaceName, String className, String constructorName) in {SolutionDirectory}src\ProxyInterfaceSourceGenerator\FileGenerators\ProxyClassesGenerator.cs:line 82
+ at ProxyInterfaceSourceGenerator.FileGenerators.ProxyClassesGenerator.TryGenerateFile(ProxyData pd, FileData& fileData) in {SolutionDirectory}src\ProxyInterfaceSourceGenerator\FileGenerators\ProxyClassesGenerator.cs:line 46
+ at ProxyInterfaceSourceGenerator.FileGenerators.ProxyClassesGenerator.GenerateFiles()+MoveNext() in {SolutionDirectory}src\ProxyInterfaceSourceGenerator\FileGenerators\ProxyClassesGenerator.cs:line 23
+ at ProxyInterfaceSourceGenerator.ProxyInterfaceCodeGenerator.GenerateProxyClasses(GeneratorExecutionContext ctx, ProxySyntaxReceiver receiver, Boolean supportsNullable) in {SolutionDirectory}src\ProxyInterfaceSourceGenerator\ProxyInterfaceCodeGenerator.cs:line 101
+ at ProxyInterfaceSourceGenerator.ProxyInterfaceCodeGenerator.Execute(GeneratorExecutionContext context) in {SolutionDirectory}src\ProxyInterfaceSourceGenerator\ProxyInterfaceCodeGenerator.cs:line 51*/
+ }
+]
\ No newline at end of file
diff --git a/tests/ProxyInterfaceSourceGeneratorTests/ProxyInterfaceSourceGeneratorTest.GenerateFiles_ForClassWithIgnores.received.txt b/tests/ProxyInterfaceSourceGeneratorTests/ProxyInterfaceSourceGeneratorTest.GenerateFiles_ForClassWithIgnores.received.txt
new file mode 100644
index 0000000..1e9a316
--- /dev/null
+++ b/tests/ProxyInterfaceSourceGeneratorTests/ProxyInterfaceSourceGeneratorTest.GenerateFiles_ForClassWithIgnores.received.txt
@@ -0,0 +1,117 @@
+[
+ {
+ HintName: ProxyInterfaceGenerator.Extra.g.cs,
+ Source:
+//----------------------------------------------------------------------------------------
+//
+// This code was generated by https://github.com/StefH/ProxyInterfaceSourceGenerator.
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//----------------------------------------------------------------------------------------
+
+using System;
+
+namespace ProxyInterfaceGenerator
+{
+ [AttributeUsage(AttributeTargets.Interface)]
+ internal sealed class ProxyAttribute : Attribute
+ {
+ public Type Type { get; }
+ public bool ProxyBaseClasses { get; }
+ public ProxyClassAccessibility Accessibility { get; }
+ public string[] MembersToIgnore { get; }
+
+ public ProxyAttribute(Type type) : this(type, false, ProxyClassAccessibility.Public)
+ {
+ }
+
+ public ProxyAttribute(Type type, bool proxyBaseClasses) : this(type, proxyBaseClasses, ProxyClassAccessibility.Public)
+ {
+ }
+
+ public ProxyAttribute(Type type, ProxyClassAccessibility accessibility) : this(type, false, accessibility)
+ {
+ }
+
+ public ProxyAttribute(Type type, bool proxyBaseClasses, ProxyClassAccessibility accessibility) : this(type, proxyBaseClasses, accessibility, Array.Empty())
+ {
+ }
+
+ public ProxyAttribute(Type type, bool proxyBaseClasses, ProxyClassAccessibility accessibility, string[] membersToIgnore)
+ {
+ Type = type;
+ ProxyBaseClasses = proxyBaseClasses;
+ Accessibility = accessibility;
+ MembersToIgnore = membersToIgnore;
+ }
+ }
+
+ [Flags]
+ internal enum ProxyClassAccessibility
+ {
+ Public = 0,
+
+ Internal = 1
+ }
+}
+ },
+ {
+ HintName: ProxyInterfaceSourceGeneratorTests.Source.IFoo2.g.cs,
+ Source:
+//----------------------------------------------------------------------------------------
+//
+// This code was generated by https://github.com/StefH/ProxyInterfaceSourceGenerator.
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//----------------------------------------------------------------------------------------
+
+#nullable enable
+using System;
+
+namespace ProxyInterfaceSourceGeneratorTests.Source
+{
+ public partial interface IFoo2
+ {
+ global::ProxyInterfaceSourceGeneratorTests.Source.Foo2 _Instance { get; }
+
+ global::ProxyInterfaceSourceGeneratorTests.Source.IFoo2[] Foos { get; set; }
+
+ global::ProxyInterfaceSourceGeneratorTests.Source.IFoo2[] DoSomethingAndGetAnArrayOfFoos();
+ }
+}
+#nullable restore
+ },
+ {
+ HintName: Error.g.cs,
+ Source:
+/*
+ProxyInterfaceCodeGenerator
+
+[Exception]
+System.InvalidOperationException: Sequence contains no elements
+ at System.Linq.ThrowHelper.ThrowNoElementsException()
+ at System.Linq.Enumerable.First[TSource](IEnumerable`1 source)
+ at System.Linq.ImmutableArrayExtensions.First[T](ImmutableArray`1 immutableArray)
+ at ProxyInterfaceSourceGenerator.FileGenerators.ProxyClassesGenerator.GenerateOperators(ClassSymbol targetClassSymbol, ProxyData proxyData) in {SolutionDirectory}src\ProxyInterfaceSourceGenerator\FileGenerators\ProxyClassesGenerator.cs:line 350
+ at ProxyInterfaceSourceGenerator.FileGenerators.ProxyClassesGenerator.CreateProxyClassCode(ProxyData pd, ClassSymbol targetClassSymbol, IReadOnlyList`1 extendsProxyClasses, String interfaceName, String className, String constructorName) in {SolutionDirectory}src\ProxyInterfaceSourceGenerator\FileGenerators\ProxyClassesGenerator.cs:line 82
+ at ProxyInterfaceSourceGenerator.FileGenerators.ProxyClassesGenerator.TryGenerateFile(ProxyData pd, FileData& fileData) in {SolutionDirectory}src\ProxyInterfaceSourceGenerator\FileGenerators\ProxyClassesGenerator.cs:line 46
+ at ProxyInterfaceSourceGenerator.FileGenerators.ProxyClassesGenerator.GenerateFiles()+MoveNext() in {SolutionDirectory}src\ProxyInterfaceSourceGenerator\FileGenerators\ProxyClassesGenerator.cs:line 23
+ at ProxyInterfaceSourceGenerator.ProxyInterfaceCodeGenerator.GenerateProxyClasses(GeneratorExecutionContext ctx, ProxySyntaxReceiver receiver, Boolean supportsNullable) in {SolutionDirectory}src\ProxyInterfaceSourceGenerator\ProxyInterfaceCodeGenerator.cs:line 101
+ at ProxyInterfaceSourceGenerator.ProxyInterfaceCodeGenerator.Execute(GeneratorExecutionContext context) in {SolutionDirectory}src\ProxyInterfaceSourceGenerator\ProxyInterfaceCodeGenerator.cs:line 51
+
+[StackTrace]
+ at System.Linq.ThrowHelper.ThrowNoElementsException()
+ at System.Linq.Enumerable.First[TSource](IEnumerable`1 source)
+ at System.Linq.ImmutableArrayExtensions.First[T](ImmutableArray`1 immutableArray)
+ at ProxyInterfaceSourceGenerator.FileGenerators.ProxyClassesGenerator.GenerateOperators(ClassSymbol targetClassSymbol, ProxyData proxyData) in {SolutionDirectory}src\ProxyInterfaceSourceGenerator\FileGenerators\ProxyClassesGenerator.cs:line 350
+ at ProxyInterfaceSourceGenerator.FileGenerators.ProxyClassesGenerator.CreateProxyClassCode(ProxyData pd, ClassSymbol targetClassSymbol, IReadOnlyList`1 extendsProxyClasses, String interfaceName, String className, String constructorName) in {SolutionDirectory}src\ProxyInterfaceSourceGenerator\FileGenerators\ProxyClassesGenerator.cs:line 82
+ at ProxyInterfaceSourceGenerator.FileGenerators.ProxyClassesGenerator.TryGenerateFile(ProxyData pd, FileData& fileData) in {SolutionDirectory}src\ProxyInterfaceSourceGenerator\FileGenerators\ProxyClassesGenerator.cs:line 46
+ at ProxyInterfaceSourceGenerator.FileGenerators.ProxyClassesGenerator.GenerateFiles()+MoveNext() in {SolutionDirectory}src\ProxyInterfaceSourceGenerator\FileGenerators\ProxyClassesGenerator.cs:line 23
+ at ProxyInterfaceSourceGenerator.ProxyInterfaceCodeGenerator.GenerateProxyClasses(GeneratorExecutionContext ctx, ProxySyntaxReceiver receiver, Boolean supportsNullable) in {SolutionDirectory}src\ProxyInterfaceSourceGenerator\ProxyInterfaceCodeGenerator.cs:line 101
+ at ProxyInterfaceSourceGenerator.ProxyInterfaceCodeGenerator.Execute(GeneratorExecutionContext context) in {SolutionDirectory}src\ProxyInterfaceSourceGenerator\ProxyInterfaceCodeGenerator.cs:line 51*/
+ }
+]
\ No newline at end of file
diff --git a/tests/ProxyInterfaceSourceGeneratorTests/ProxyInterfaceSourceGeneratorTest.cs b/tests/ProxyInterfaceSourceGeneratorTests/ProxyInterfaceSourceGeneratorTest.cs
index 758cfe9..bb9f9b1 100644
--- a/tests/ProxyInterfaceSourceGeneratorTests/ProxyInterfaceSourceGeneratorTest.cs
+++ b/tests/ProxyInterfaceSourceGeneratorTests/ProxyInterfaceSourceGeneratorTest.cs
@@ -105,7 +105,11 @@ public class ProxyInterfaceSourceGeneratorTest
AttributeToAddToInterface = new ExtraAttribute
{
Name = "ProxyInterfaceGenerator.Proxy",
- ArgumentList = "typeof(ProxyInterfaceSourceGeneratorTests.Source.Foo2)"
+ ArgumentList = new []
+ {
+ "typeof(ProxyInterfaceSourceGeneratorTests.Source.Foo2)", "false", "ProxyClassAccessibility.Public",
+ "new []{\"Weird\"}"
+ }
}
};