Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我可以使用单个WCF方法从多个类返回一个类吗?_C#_Wcf_Contract - Fatal编程技术网

C# 我可以使用单个WCF方法从多个类返回一个类吗?

C# 我可以使用单个WCF方法从多个类返回一个类吗?,c#,wcf,contract,C#,Wcf,Contract,我在c上有一个模型课# 我还有近20个类,它们实现了将它们转换为枚举器类的方法 我的问题很简单:有没有办法在WCF服务上编写一个方法,让客户端选择要枚举的类?返回的类型始终是和枚举器类。还是我必须写20份作业合同,每班一份?这似乎不太合乎逻辑 这些数据主要用于填充客户端的组合框。如果我理解正确,您希望在WCF中执行一个操作,将实现某些IEnumerate(例如)的任何类型转换为枚举对象。如果是真的,这里有一个代码 [DataContract] [KnownType(typeof(Enumerat

我在c上有一个模型课#

我还有近20个类,它们实现了将它们转换为枚举器类的方法

我的问题很简单:有没有办法在WCF服务上编写一个方法,让客户端选择要枚举的类?返回的类型始终是和枚举器类。还是我必须写20份作业合同,每班一份?这似乎不太合乎逻辑


这些数据主要用于填充客户端的组合框。

如果我理解正确,您希望在WCF中执行一个操作,将实现某些IEnumerate(例如)的任何类型转换为枚举对象。如果是真的,这里有一个代码

[DataContract]
[KnownType(typeof(Enumerate1))]
[KnownType(typeof(Enumerate2))]
[KnownType(typeof(EnumerateN))]
// up yo 20
public interface IEnumerate 
{
    [DataMember]
    string Description{ get; set; }
    [DataMember]
    int ID {get; set;}
    //  whatever you need 
}



希望这有助于您使用
WebOperationContext.Current.CreateTextResponse
返回
System.ServiceModel.Channels.Message
(意味着您将手动进行序列化)谢谢@EZI。我不确定我是否明白你的意思。如果我知道返回的类型,为什么需要序列化manual?你能详细解释一下吗?埃里克帕。您将返回
消息
而不是真正的类。(顺便说一句:您也可以返回流。将所有返回值(对象的序列化形式)填入MemoryStream并返回,)
[DataContract]
[KnownType(typeof(Enumerate1))]
[KnownType(typeof(Enumerate2))]
[KnownType(typeof(EnumerateN))]
// up yo 20
public interface IEnumerate 
{
    [DataMember]
    string Description{ get; set; }
    [DataMember]
    int ID {get; set;}
    //  whatever you need 
}
[ServiceContract]
public interface IService
{
    [OperationContract]
    Enumerator GetEnumerator(IEnumerate obj);
}
public Service: IService
{
      Enumerator GetEnumerator(IEnumerate obj)
      {
         // convert
      }
}