双工服务引用将接口类型转换为system.object类型

时间:2012-11-29 20:36:51

标签: c# wcf

这是我的wcf双工服务回调接口:

public interface ICallback
{
    [OperationContract(IsOneWay = true)]
    void SendClientCallback(CallbackMessage callbackMessage);

    [OperationContract]
    void GetTemplateList(ref List<ISpecimenTemplateDescriptor> templateDescriptors, IDrawerLayout drawerLayout);
}

我将服务引用配置为使用System.Collections.Generic.List类型。我通过右键单击服务引用,选择配置服务选项以及更改集合类型来完成此操作。这将服务引用配置为使用List的集合类型,而不是默认的Array类型。

当我编译并更新我的服务引用时,我的接口类型“ISpecimenTemplateDescriptor”和“IDrawerLayout”将转换为“System.Object”,如下所示:

void GetTemplateList(ref System.Collections.Generic.List<object> templateDescriptors, object drawerLayout);

为什么我的接口对象在服务引用中转换为System.Object?

这是我的服务合同:

[ServiceContract(SessionMode = SessionMode.Required, CallbackContract = typeof(ICallback))]
public interface IWcfService
{
      .....
}

以下是我的服务行为:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Reentrant, UseSynchronizationContext = false)]
public class WcfService : IWcfService
{
    ......
}

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

好吧,我已经搜索过高低。最后,我恢复使用可序列化的具体类,而不是尝试在我的服务引用中使用接口。