Home

Awesome

Minerals.AutoInterfaces

GitHub License NuGet Version NuGet Downloads

Package on nuget.org

This NuGet package provides a functionality to automatically generate interfaces for C# classes with a single attribute. This simplifies the creation of interfaces for classes with clearly defined public members, without having to manually write interface code.

Features

Installation

Add the Minerals.AutoInterfaces nuget package to your C# project using the following methods:

1. Project file definition

<PackageReference Include="Minerals.AutoInterfaces" Version="0.1.5" />

2. dotnet command

dotnet add package Minerals.AutoInterfaces

Usage

To use the package, add the [GenerateInterface] attribute to the selected class.

namespace Examples
{
    [Minerals.AutoInterfaces.GenerateInterface]
    public class ExampleClass
    {
        public int Property1 { get; set; } = 1;
        public int Property2 { get; private set; } = 2;
        public int Property3
        {
            get { return _field1; }
            set { _field1 = value; }
        }

        private int _field1 = 0;

        public int Method1(int arg0, int arg1)
        {
            return arg0 + arg1;
        }

        public void Method2<T>(T arg0) where T : class, new()
        {
            return $"{arg0}";
        }

        protected void Method3() { }
    }
}

The code above will generate the IExampleClass.g.cs file with the IExampleClass interface.

namespace Examples
{
    [global::System.Runtime.CompilerServices.CompilerGenerated]
    public interface IExampleClass
    {
        int Property1 { get; set; }
        int Property2 { get; }
        int Property3 { get; set; }
        int Method1(int arg0, int arg1);
        string Method2<T>(T arg0) where T : class, new();
    }
}

Package supports custom interface names

namespace Examples
{
    [Minerals.AutoInterfaces.GenerateInterface("ExampleInterface")]
    public class ExampleClass
    {
        public int Property1 { get; protected set; } = 1;
    }
}

The code above will generate the ExampleInterface.g.cs file with the ExampleInterface interface.

namespace Examples
{
    [global::System.Runtime.CompilerServices.CompilerGenerated]
    public interface ExampleInterface
    {
        int Property1 { get; }
    }
}

Versioning

We use SemVer for versioning. For the versions available, see the branches on this repository.

Authors

See also the list of contributors who participated in this project.

License

This project is licensed under the MIT License - see the LICENSE file for details.