C# 修饰符“抽象”对此项无效

本文关键字:无效 抽象 | 更新日期: 2023-09-27 17:48:54

我正在尝试构建另一个人的C#项目。在很多接口中,我收到错误:

The modifier 'abstract' is not valid for this item

在以下界面中:

namespace Services.Email
{
    using System;
    using System.Collections;
    using.System.Collections.Generic;
    using System.Runtime.CompilerServices;
    public interface IEmailService
    {
        abstract event EventHandler<SendCompletedEventArgs> SendSummaryCompleted;
        void SendNewsItem(DocumentNewsItem newsItem, string email);
        void SendSummaryAsync(Session session, Advisor advisor);
    }
}

C# 修饰符“抽象”对此项无效

只需删除abstract,它不适用于接口。界面中的所有内容本质上都已经是"抽象的"。抽象类实际上在许多方面与具有未实现的所需接口的类相同。

请参阅此 MSDN 文章:http://msdn.microsoft.com/en-us/library/aa664580%28v=vs.71%29.aspx

所有接口成员都隐式具有公共访问权限。接口成员声明包含任何修饰符是一个编译时错误。特别是,不能使用修饰符抽象、公共、受保护、内部、私有、虚拟、覆盖或静态来声明接口成员。

解决方案:删除"抽象"修饰符

接口不允许

包含修饰符,如 abstractvirtualpublicprotectedprivate , ...
溶液:
只需将其删除即可。

在 .NET 和 C# 中,不支持接口中的成员修饰符。

如果你想要这样的东西,你最好将它们切换到抽象类,但恕我直言,这不是开发软件的好方法(重构代码而不考虑实际需求是什么)。

简单的解决方案:只需删除任何修饰符,保留任何类型的接口成员的类型、标识符和参数。

它确实是无效的。 删除抽象关键字并重新编译。