C# Compiler Error
CS0577 – The Conditional attribute is not valid on ‘function’ because it is a constructor, destructor, operator, or explicit interface implementation
Reason for the Error
You will get this error in your C# code when you have applied the conditional attributes to specific methods which are not supported by C#.
For example, let’s compile the below C# program
using System;
namespace DeveloperPublishConsole1
{
interface IEmployee
{
void GetData();
}
public class MyClass : IEmployee
{
[System.Diagnostics.Conditional("a")] // CS0577
void IEmployee.GetData()
{
}
}
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
You will receive the error code CS0577 because you have applied the conditional attribute on a method that is an explicit interface definition.
Error CS0577 The Conditional attribute is not valid on ‘MyClass.IEmployee.GetData()’ because it is a constructor, destructor, operator, lambda expression, or explicit interface implementation DeveloperPublishConsole1 C:\Users\SenthilBalu\source\repos\DeveloperPublishConsole1\DeveloperPublishConsole1\Program.cs 10 Active

Solution
C# doesn’t allow you to have an conditional attributes applied on a explicit interface definition.
You can fix this error in your C# program by removing the conditional attribute on the GetData() method in the class MyClass.