【问题标题】:C# The modifier 'abstract' is not valid for this itemC# 修饰符 'abstract' 对此项目无效
【发布时间】:2011-07-30 20:09:47
【问题描述】:

我正在尝试构建另一个人的 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# .net interface abstract


【解决方案1】:

只要去掉abstract,它不适用于接口。界面中的所有内容本质上已经是“抽象的”。抽象类实际上在很多方面与具有所需接口但未实现的类相同。

【讨论】:

  • +1 - 根据您的应用程序设计,最好选择其中之一,不要同时使用!#
  • 我的观点是,抽象类不只是像普通类那样具有要实现的隐式接口。在我的编码中,我根据类型在概念上表示的内容来选择抽象类或接口。例如,如果我想确保某些类能够是 JSON 可序列化的,我会选择实现一个“IJsonSerializable”接口,而如果我希望某个基类的任何派生类都能够是 JSON -serializable,我更喜欢实现一个“JsonSerializableObject”抽象类。
  • @Matias:您所描述的是接口描述 has-acan-do 关系的经常被吹捧的规则,而类描述 is-a 关系。
  • 这一事实定义了为什么你会或不会使用抽象类(has-a 序列化程序,与 is-a 序列化程序) .我只是说在实现中,抽象类和需要特定接口的常规类(尽管一些不存在的符号)之间的唯一实际区别是抽象类中的接口在该基础之外不可用班级。这使它成为“是”。
  • 我只是在添加信息!我不是在讨论这个答案。
【解决方案2】:

接口不允许包含修饰符,如abstractvirtualpublicprotectedprivate、...
解决方案:
只需将其删除。

【讨论】:

    【解决方案3】:

    确实无效。去掉 abstract 关键字并重新编译。

    【讨论】:

      【解决方案4】:

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

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

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

      【讨论】:

        【解决方案5】:

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

        所有接口成员都隐含地具有公共访问权限。接口成员声明包含任何修饰符是编译时错误。特别是,接口成员不能使用修饰符 abstract、public、protected、internal、private、virtual、override 或 static 声明。

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

        【讨论】:

        猜你喜欢
        • 2012-07-17
        • 1970-01-01
        • 1970-01-01
        • 2019-08-04
        • 2016-11-01
        • 2013-04-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多