【问题标题】:Method returning multiple data type返回多种数据类型的方法
【发布时间】:2014-01-14 19:29:38
【问题描述】:

目前我正在做一个有管理端和客户端的项目。

管理端使用DirectResult 执行任何与管理相关的操作,而客户端使用JsonResult 呈现页面,而我想使用相同的Controllers。根据请求返回DirectResultJsonResult 的方法。

例如:

  • Admin : Class1.Method() --> 应该返回 DirectResult
  • Client : Class1.Method() --> 应该返回 JsonResult,

两个结果都是使用Ajax requests 请求的。

【问题讨论】:

  • DirectResult 或 JsonResult 在编程方面有什么共同点吗?我觉得 Method() 应该在代表 Admin 或 Client 的类上,但如果不了解您的设计,这很难说。
  • 它们有共同的接口或基类吗?

标签: c# asp.net generics return-value return-type


【解决方案1】:

这个问题已经回答了这个问题:StackOverFlow question。 另一种不返回一般对象的方法是为两种返回类型实现相同的祖先并将其设置为返回类型。 或者返回带有空值的Tuple

【讨论】:

    【解决方案2】:

    由于 C# 的限制,无法执行此操作。 C# 类中的每个方法都必须具有唯一的方法签名,但返回类型不计入签名中。

    考虑使用不同的名称创建 Ajax 方法(因为这通常对您的客户端不可见)。

    约束(泛型)为not part of the method signature,因此除非您向方法传递不同的参数,否则结果与将它们命名为相同的返回类型相同。

    编辑:我误解了。如果 DirectResult 和 JsonResult 都继承自同一个基类型,您可以在响应中返回其中任何一个,转换为基类型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-12
      • 1970-01-01
      • 1970-01-01
      • 2016-04-20
      • 1970-01-01
      • 2012-01-13
      • 2020-05-16
      • 1970-01-01
      相关资源
      最近更新 更多