[英]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上搜索了有關此問題的信息,似乎以上方法可以解決問題。 但是我無法在客戶程序中訪問它們。 它不會出現在智能感知中。
有任何輸入嗎?
我認為您在這里混淆了一些事情。
我建議這樣的東西: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.