0

我正在尝试为 Windows Azure 的 appFabric 提供服务。我是实现和 EchoService,我需要顺便实现和 IEchoContract 接口,所有这些都在服务器端。所以我就这样进行。

在 IEchoContract.cs 上

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;


namespace Service
{
[ServiceContract(Name = "EchoContract", Namespace = "http://samples.microsoft.com/ServiceModel/Relay/")]
interface IEchoContract
{
    public interface IEchoContract
    {
        [OperationContract]
        string Echo(string text);
    }
}}

在 EchoSERvice.cs 上

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;

namespace Service
{
class EchoService
{
    [ServiceBehavior(Name = "EchoService", Namespace = "http://samples.microsoft.com/ServiceModel/Relay/")]
    public class EchoService : IEchoContract
    {
        public string Echo(string text)
        {
            Console.WriteLine("Echoing: {0}", text);
            return text;
        }
    }}}

我有两个错误,我不是 C# 专家所以第一个:当我输入 EchoService : IEchoContract 我得到了

'EchoService': member names cannot be the same as their enclosing type

第二,当我把公共接口 IEchoContract

'IEchoContract' : interfaces declare types

所以请帮忙。谢谢。

4

4 回答 4

2

您已经声明了接口和类两次 - 每个只声明一次。

IEchoContract.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;

namespace Service
{
    [ServiceContract(Name = "EchoContract", Namespace = "http://samples.microsoft.com/ServiceModel/Relay/")]
    public interface IEchoContract
    {
        [OperationContract]
        string Echo(string text);
    }
}

回声服务.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;

namespace Service
{
    [ServiceBehavior(Name = "EchoService", Namespace = "http://samples.microsoft.com/ServiceModel/Relay/")]
    public class EchoService : IEchoContract
    {
        public string Echo(string text)
        {
            Console.WriteLine("Echoing: {0}", text);
            return text;
        }
    }
}
于 2011-03-01T12:10:29.817 回答
1

如果您在代码中看到您在名为 EchoService 的类中有一个名为 EchoService 的类

namespace Service
{
  class EchoService
  {
    [ServiceBehavior(Name = "EchoService", Namespace = "http://samples.microsoft.com/ServiceModel/Relay/")]
    public class EchoService : IEchoContract
    ...

尝试删除外部类,因为它在这里没有意义

namespace Service
{
  [ServiceBehavior(Name = "EchoService", Namespace = "http://samples.microsoft.com/ServiceModel/Relay/")]
  public class EchoService : IEchoContract
  ...

您还必须删除您的外部接口,因为它们也被定义了两次(可能是您的类最终也定义了两次的原因)

于 2011-03-01T12:11:29.450 回答
0

在 EchoService.cs 中,您不能调用内部类 EchoService,因为它上面已经有一个类 EchoService。您需要重命名其中之一。

于 2011-03-01T12:10:07.647 回答
0

您在 EchoService 类中定义了一个 EchoService 类——这是不可能的。只需删除外部的“EchoService 类”就可以了。

于 2011-03-01T12:11:18.493 回答