2

我在将我的公共枚举类从我的 WCF 服务共享到我的客户端程序时遇到问题。(我希望能够从我的客户端程序访问每个枚举属性)。(我已将我的服务添加为 i 服务参考)。(为了测试我只有两个 EnumMemer - 我知道..)

我的 Service.svc.cs 文件中有这个:

namespace ITHelperService
{
[DataContract]
public class Service : IService
{
    [DataMember]
    public CommandsEnums comands;

    [DataContract(Name="CommandsEnums")]
    public enum CommandsEnums
    {
        [EnumMember]
        Get_IPConfig,
        [EnumMember]
        Get_IPConfig_all,
        Get_BIOSVersion,
        Get_JavaVersion,
        Get_RecentInstalledPrograms,
        Get_RecentEvents,
        Get_WEIScore,
        Do_Ping,
        Do_NSLookup
    }
}
}

这是我的 IService.cs 文件:

namespace ITHelperService
{
[ServiceContract]
[ServiceKnownType(typeof(ITHelperService.Service.CommandsEnums))]
public interface IService
{


}
}

我已经在互联网上搜索过这个问题,似乎上面的方法应该可以解决问题。但我无法在我的客户端程序中访问它们。它不会出现在智能感知中。

请问有什么输入吗?

4

2 回答 2

1

我认为你在这里混淆了一些事情。

  1. IService 中没有任何操作。ServiceContract 应该有一些 OperationContract,您可以在 Service 类中实现它们。
  2. 您的 IService 的实现,即服务类,不应该是 DataContract!它是您对 IService 接口的实现。
  3. 正如 Simon 指出的那样,Enum CommandsEnums 可能不应该在 Service 类的实现中。

我会建议这样:IService.cs 文件:

namespace ITHelperService
{
 [ServiceContract]
 [ServiceKnownType(typeof(ITHelperService.Service.CommandsEnums))]
 public interface IService
 {
  [OperationContract]
  void Test();
 }
}

Service.svc.cs 文件:

namespace ITHelperService
{
[DataContract]
public class Service : IService
{
    public void Test()
    {
     // This is the method that you can call from your client
    }

}

 [DataContract(Name="CommandsEnums")]
    public enum CommandsEnums
    {
        [EnumMember]
        Get_IPConfig,
        [EnumMember]
        Get_IPConfig_all,
        Get_BIOSVersion,
        Get_JavaVersion,
        Get_RecentInstalledPrograms,
        Get_RecentEvents,
        Get_WEIScore,
        Do_Ping,
        Do_NSLookup
    }
}
于 2013-07-03T19:04:54.980 回答
0

您的枚举不应包含在服务器端代码中。如果您想共享公共代码,请将其放在公共位置。这样客户端和服务器都可以引用它。

于 2013-07-03T19:03:52.433 回答