This commit is contained in:
Stef Heyenrath
2023-02-25 10:12:37 +01:00
parent b2ab22a1bf
commit af99f41dc9
11 changed files with 91 additions and 203 deletions
@@ -1,60 +1,60 @@
using ProxyInterfaceSourceGenerator.Models;
namespace ProxyInterfaceSourceGenerator.FileGenerators;
internal class ProxyAttributeGenerator : IFileGenerator
{
private const string ClassName = "ProxyAttribute";
public FileData GenerateFile()
{
return new FileData($"ProxyInterfaceGenerator.{ClassName}.g.cs", $@"//----------------------------------------------------------------------------------------
// <auto-generated>
// 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.
// </auto-generated>
//----------------------------------------------------------------------------------------
using System;
namespace ProxyInterfaceGenerator
{{
[AttributeUsage(AttributeTargets.Interface)]
public class {ClassName} : Attribute
{{
public Type Type {{ get; }}
public bool ProxyBaseClasses {{ get; }}
public ProxyClassAccessibility Accessibility {{ get; }}
public {ClassName}(Type type) : this(type, false, ProxyClassAccessibility.Public)
{{
}}
public {ClassName}(Type type, bool proxyBaseClasses) : this(type, proxyBaseClasses, ProxyClassAccessibility.Public)
{{
}}
public {ClassName}(Type type, ProxyClassAccessibility accessibility) : this(type, false, accessibility)
{{
}}
public {ClassName}(Type type, bool proxyBaseClasses, ProxyClassAccessibility accessibility)
{{
Type = type;
ProxyBaseClasses = proxyBaseClasses;
Accessibility = accessibility;
}}
}}
[Flags]
public enum ProxyClassAccessibility
{{
Public = 0,
Internal = 1
}}
}}");
}
using ProxyInterfaceSourceGenerator.Models;
namespace ProxyInterfaceSourceGenerator.FileGenerators;
internal class ExtraFilesGenerator : IFileGenerator
{
private const string Name = "ProxyInterfaceGenerator.Extra.g.cs";
public FileData GenerateFile()
{
return new FileData($"{Name}", $@"//----------------------------------------------------------------------------------------
// <auto-generated>
// 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.
// </auto-generated>
//----------------------------------------------------------------------------------------
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 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)
{{
Type = type;
ProxyBaseClasses = proxyBaseClasses;
Accessibility = accessibility;
}}
}}
[Flags]
internal enum ProxyClassAccessibility
{{
Public = 0,
Internal = 1
}}
}}");
}
}