修饰符“public”对此项目无效

本文关键字:项目 无效 public | 更新日期: 2023-09-27 18:27:53

namespace WcfService1
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IService1" in both code and config file together.
    [ServiceContract]
    public interface HelloWorldService
    {
        [OperationContract]
        [WebGet(UriTemplate = "")]
        public string HelloWorld() //here
        {
            return "Hello world!";
        }
    }
}

我收到此错误:

Error   1   The modifier 'public' is not valid for this item

这是我的 svc.cs 文件中的内容

public class Service1 : HelloWorldService
{
    public string HelloWorld()
    {
        return string.Format("Hello World!");
    }
}

这实际上来自我大学的教程:

与上周我们首先为服务创建接口不同,我们将在第一个示例中创建 WCF 服务对象。这是为了在教程中节省时间。最佳实践意味着我们应该为所有服务创建接口,这与定义的服务协定相关。首先,在 Visual Studio 2008 中创建一个新项目(请记住添加 System.ServiceModel 和 System.ServiceModel.Web 引用,以及这两个命名空间的 using 声明(,并添加以下类定义:

[ServiceContract]
public class HelloWorldService
{
[OperationContract]
[WebGet(UriTemplate="")]
public string HelloWorld()
{
return "Hello world!";
}
}

您应该熟悉上周教程中此 WCF 服务的基本结构。区别在于我们添加到方法中的额外属性:[WebGet(UriTemplate="(]此属性声明服务接收 HTTP GET 消息(WebGet 部分(,并且 URL 的其余部分与服务终结点无关(这将在后面的示例之后变得更加清晰(。要托管此服务,我们需要以下主要应用程序:

修饰符“public”对此项目无效

interface声明上的成员不能具有访问修饰符。 它们隐式具有与包含interface相同的可访问性。 如果可以访问某个接口,则可以访问其所有成员

不能在接口中指定作用域或方法主体。试试这个:

namespace WcfService1
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IService1" in both code and config file together.
    [ServiceContract]
    public interface HelloWorldService
    {
        [OperationContract]
        [WebGet(UriTemplate = "")]
        string HelloWorld();
    }
}

从文档中:

直接在命名空间中声明的接口可以声明为 公共或内部,就像类和结构一样,接口 默认为内部访问。接口成员始终是公共的 因为接口的目的是使其他类型的接口能够访问 类或结构。不能将访问修饰符应用于接口 成员。

来源: http://msdn.microsoft.com/en-us/library/ms173121%28v=vs.100%29.aspx

不能在 C# 接口上声明辅助功能。 接口方法也不能有实现。

相关文章: