C# 方法返回多个数据类型

C# 方法返回多个数据类型,c#,asp.net,generics,return-value,return-type,C#,Asp.net,Generics,Return Value,Return Type,目前我正在做一个项目,它有一个管理端和客户端 管理员端使用DirectResult执行任何与管理员相关的操作,其中客户端使用JsonResult呈现页面,我希望使用相同的控制器。方法根据请求返回DirectResult或JsonResult 例如: Admin:Class1.Method()-->应返回DirectResult Client:Class1.Method()-->应该返回JsonResult 这两个结果都是使用Ajax请求来请求的。由于C#的限制,不可能这样做。 类C#中的每个

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

管理员端使用
DirectResult
执行任何与管理员相关的操作,其中客户端使用
JsonResult
呈现页面,我希望使用相同的
控制器。方法根据请求返回
DirectResult
JsonResult

例如:

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

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

由于C#的限制,不可能这样做。 类C#中的每个方法都必须具有唯一的方法签名,但签名中不计算返回类型

考虑使用不同的名称创建Ajax方法(因为这通常是客户端看不到的名称)

约束(泛型)是有限制的,因此除非您向方法传递不同的参数,否则它将产生相同的结果,就像将它们命名为相同的返回类型/不同的返回类型一样


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

此问题的答案如下:。 不返回常规对象的另一种方法是为两种返回类型实现相同的祖先,并将其设置为返回类型。
或者返回空值。

听说过泛型吗?DirectResult或JsonResult在编程上有什么共同点吗?我觉得Method()应该在一个代表管理员或客户机的类上,但如果不了解您的设计,这很难说。它们有公共接口或基类吗?