修饰符“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 的其余部分与服务终结点无关(这将在后面的示例之后变得更加清晰(。要托管此服务,我们需要以下主要应用程序:
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# 接口上声明辅助功能。 接口方法也不能有实现。