The declaration of a delegate is a type itself, like declaring an interface or a class. Interfaces do not support nesting types in C# 7.3 and prior. To get your code working, you have to move the delegate declaration to the outer scope.
public delegate void DBOperationResult(string result); // a type itself
public interface IDatabaseItem
{
int Id { get; }
DateTime Date { get; }
bool Delete(DBOperationResult foo);
}
With the introduction of ‘default interface implementations’ in C# 8.0 interfaces have been extended to permit the declaration of nested types (like your delegate).
See https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-8.0/default-interface-methods for more details.
CLICK HERE to find out more related problems solutions.