【问题标题】:RouteAttribute, AttributeUsage, Inherited = trueRouteAttribute, AttributeUsage, Inherited = true
【发布时间】:2013-01-31 21:51:34
【问题描述】:

我目前在 DTO 之间有继承,只要我为每个具体(叶节点)DTO 定义了一个 [Route],而不是在某个超类上,它就可以很好地工作。到目前为止,超类都是抽象的。现在我的情况是,我有一个具体的 DTO,它定义了一个 [Route] 属性,它也是另一个 DTO 的超类,它有自己的路由。

两个 DTO 都有自己的服务,但不能按预期工作。两个 DTO 都“路由”到叶节点。

superclass DTOA
subclass DTOB where DTOB : DTOA

当我在 DTOA 上执行 GET 时,响应的是 DTOB 的服务。除了对我的继承进行不同的建模之外,我怎样才能修复路由按我希望的那样工作?

因此:

DTOA routed to serviceA
DTOB routed to serviceB

发生这种情况是因为 RouteAttributes 是继承的吗? RouteAttribute 上有 Inherited = true 的原因是什么?

【问题讨论】:

    标签: servicestack


    【解决方案1】:

    不要在请求 DTO 中使用继承。首先是Inheritance on DTOs are bad idea,在为每项服务定制的请求 DTO 中应特别避免使用它们。

    Route 属性可应用于服务和/或请求 DTO,并支持 New API 和允许继承的旧 API。

    【讨论】:

    • 如果你说“继承”对 DTO 来说是个坏主意(老实说我不同意),为什么要对路由属性进行继承?
    • 因为您可以将属性放在“旧 API”服务类上。
    猜你喜欢
    • 1970-01-01
    • 2018-12-08
    • 1970-01-01
    • 2014-09-23
    • 2019-03-27
    • 2016-07-24
    • 2020-10-23
    • 1970-01-01
    • 2019-04-01
    相关资源
    最近更新 更多