0

我正在使用实体框架,我想通过 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 中的这个泛型方法存在问题;我如何包装这个方法来保存这个功能?

4

1 回答 1

3

你不能。

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

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

类似的东西;

[KnownType(typeof(SomeClass))]
public interface ICRMEntities : IDisposable, IContextWithUser
    EntityObject FindByKey(string sObjectTypeCode, int keyValue, bool bRequestValue)
于 2013-02-07T12:01:04.737 回答