在ServiceStack请求中使用通用类型DTO

时间:2013-10-17 12:09:18

标签: rest generics servicestack

我想知道是否可以使用类型公共类所要求的模板化DTO

RequestDTO<T, U>       where T : class        where U : class
{
    public T ContextRequest { get; set; }

    public U Request { get; set; }
}

并将其传递给我的服务部门......

我尝试了一个类型

的简单示例
public class MyContext
{
//removed some fields  
    public int IdUser {get;set;}
}

public class MyType1Request
{
    public int IdRequest {get;set;}
}

public class MyType2Request
{
    public DateTime  SomeReallyImportantDate { get; set; }
}

public class UtenteService : Service
{
    public UtenteService()
    {
    }


    public string Any(RequestDTO<MyContext,MyType1Request> request)
    {
        return string.Format("User:{0} - IDRequest: {1}", request.ContextRequest.IdUser, request.Request.IDRequest);
    }

    public object Any(RequestDTO<MyContext, MyType2Request> request)
    {
        return string.Format("Utente:{0} - Data : {1}", request.ContextRequest.IDUtente, request.Request.DataLavorativa);
    }

但到目前为止,我尝试访问该服务

Sequence contains more than one matching element

另一种解决方案是在每个我的DTO Request对象中实现一个IContext(也许是IContextExt IContextSpecificManner)到请求对象中...但我更愿意使用第一种方法

由于

1 个答案:

答案 0 :(得分:0)

AFAIK - 这应该有效。我在这里唯一缺少的是,你需要在apphost中注册路由,如:

Routes.Add>("/Utente/{IdUser}/{IdRequest}")