簡體   English   中英

在客戶端和WCF服務之間共享枚舉?

[英]Share enum between client and WCF service?

從WCF服務到客戶端程序共享公共枚舉類時遇到問題。 (我希望能夠從我的客戶端程序訪問每個枚舉屬性)。 (我已將我的服務添加為“我的服務參考”)。 (對於測試,我只有兩個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
{


}
}

我已經在Internet上搜索了有關此問題的信息,似乎以上方法可以解決問題。 但是我無法在客戶程序中訪問它們。 它不會出現在智能感知中。

有任何輸入嗎?

我認為您在這里混淆了一些事情。

  1. IService中沒有任何操作。 一個ServiceContract應該包含一些在Service類中實現的OperationContracts。
  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
    }
}

您的枚舉不應包含在服務器端代碼中。 如果要共享通用代碼,則將其放在通用位置。 這樣客戶端和服務器都可以引用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM