【问题标题】:Generic WCF Wrapper通用 WCF 包装器
【发布时间】:2013-02-07 11:55:59
【问题描述】:

我正在使用实体框架,我想通过 wcf 服务公开一些方法;

我有这个功能(在cs页面上)

 using (ICRMEntities oContext = RemClient.Create<ICRMEntities>())                
     oContext.FindByKey<DataLib.Models.CRM.ActivitySLA>("ActivitySLA", SLAID); 

这个函数的内容是

   public static T FindByKey<T>(this IQueryable<T> oQuery, int keyValue) where T : EntityObject, ISimpleBaseClassMD
        {
            return oQuery.FindByKey<T>(keyValue, null);
        }

WCF服务中定义的接口为:

public interface ICRMEntities : IDisposable, IContextWithUser
    T FindByKey<T>(string sObjectTypeCode, int keyValue, bool bRequestValue) where T : EntityObject, ISimpleBaseClassMD;

这个泛型方法在 WCF 中存在问题; 我如何包装这个方法来保存这个功能?

【问题讨论】:

    标签: c# .net wcf entity-framework


    【解决方案1】:

    你不能。

    您不能通过 WCF 服务公开泛型方法。您需要定义将使用的类型。这是 SOAP 的限制。

    但是,您可以创建一个基类作为返回类型,并将KnownType 属性添加到服务中,以定义该服务可以返回哪些派生类。

    类似的东西;

    [KnownType(typeof(SomeClass))]
    public interface ICRMEntities : IDisposable, IContextWithUser
        EntityObject FindByKey(string sObjectTypeCode, int keyValue, bool bRequestValue)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多