namespace MgTestAdmin.Model { public interface IOperationProvider { string Name { get; } string Category { get; } ParameterSet CreateDefault(int id); } public abstract class OperationProviderBase : IOperationProvider { public string Name => this.GetType().Name.ToUpper(); public abstract string Category { get; } public abstract ParameterSet CreateDefault(int id); protected Parameter OperationParameter() => new Parameter { ParamName = "OPERATION", ParamValue = this.Name }; } }