目前我正在编写WCF服务。该服务返回一个对象,其类型是名为“System”的用户定义类。代码段如下:
[DataContract]
public class System
{
// ....
}
[ServiceContract]
public interface DemoServcie
{
[OperationContract]
System GetSystem();
}
但是我在运行wcf服务时遇到了一个问题。错误消息是:
无法添加服务。可能无法访问服务元数据。确保您的服务正在运行并公开元数据。
c:\ Users \ xxx \ AppData \ Local \ Temp \ Test Client Projects \ 10.0 \ 6909a900-97bd-4efb-aae9-6c2e9b23e4b9 \ Client.cs(321,50):错误CS0426:类型名称'Runtime'在'Demo.DomainModel.System'类型中不存在 c:\ Users \ xxx \ AppData \ Local \ Temp \ Test Client Projects \ 10.0 \ 6909a900-97bd-4efb-aae9-6c2e9b23e4b9 \ Client.cs(264,18):错误CS0426:类型名称'Runtime'不存在在“Demo.DomainModel.System”类型中 ...
但是,如果我将类名“System”重命名为其他名称,例如“System1”,则可以。我猜“系统”是一个保留的命名空间名称,不能使用。这是真的吗?
答案 0 :(得分:1)
当你有这条线时:
public partial class System : object, System.Runtime.Serialization.IExtensibleDataObject
{ ... }
问题是编译器在您刚定义的System类中查找Runtime类型,而不是在System Namespace中查找。
如果你把global:放在System.Runtime前面,它至少会编译。
public partial class System : object, global:System.Runtime.Serialization.IExtensibleDataObject
{ ... }
查看以下内容,说明您对System类的确切问题:How to: Use the Global Namespace Alias