相关疑难解决方法(0)

Web API中的多态性:单端点可能吗?

我意识到Web API是以REST为重点的,但我仍然希望配置一个可以处理命令/响应方案的控制器方法.到目前为止,我还没有成功......有没有办法让单个API端点识别以下类结构?

[Serializable]
public abstract class Command{
    public int CommandId{get; set;}
}
[Serializable]
public class RegisterNewPersonCommand:Command{
   public string Name{get; set;}
}
//etc... various Command subclasses. Similar thing for Responses.

//now have a single endpoint to Handle Commands
public class CommandsController : ApiController{
   public Response HandleCommand(Command command){
      //handle Command based on which subclass it is
      //return appropriate Response subclass
   }
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,似乎序列化系统似乎无法处理这种情况,但我希望那里有人找到了办法:)

asp.net-web-api

13
推荐指数
1
解决办法
4071
查看次数

将 if/else 语句转换为 ?: 运算符 C#

我想将我的代码减少到更好的程度。这就是为什么我试图将 if/else 语句转换为运算符 ?:

我的实际代码如下所示:

if (resultat.CodeAlgo != null)
 {
    worksheet.Cells[ligne, 7].Value = resultat.CodeAlgo.ToString();
 }
else
 {
    worksheet.Cells[ligne, 7].Value = string.Empty;
}
Run Code Online (Sandbox Code Playgroud)

我尝试转换为:

resultat.CodeAlgo != null
  ? worksheet.Cells[ligne, 7].Value = resultat.CodeAlgo.ToString()
  : worksheet.Cells[ligne, 7].Value = string.Empty;
Run Code Online (Sandbox Code Playgroud)

但它说:

只能使用赋值、调用、自增、自减、new object 语句作为语句。

我第一次使用这个运算符,我不明白为什么我的简化是错误的?

c# if-statement

2
推荐指数
1
解决办法
3390
查看次数

C#速记这有什么问题?

给出这个问题的简写如果陈述:C#

这有什么问题?

    int userID;
    Int32.TryParse(request.userID, out userID);

    userID > 0 ? user = DuoUser.LoadUser(userID): ;
Run Code Online (Sandbox Code Playgroud)

它给出了错误:

only assignment call increment decrement and new object expressions can be used as a statement
Run Code Online (Sandbox Code Playgroud)

据我所知它应该工作,但有些问题?

编辑:

我也尝试过:

    int userID = 0;

    userID > 0 ? user = DuoUser.LoadUser(userID): null;
Run Code Online (Sandbox Code Playgroud)

但它仍然给出了同样的错误.

c#

1
推荐指数
1
解决办法
105
查看次数

C#中的三元运算符是否有简写?

背景

在PHP中,有一个三元运算符的简写:

$value = "";
echo $value ?: "value was empty"; // same as $value == "" ? "value was empty" : $value;
Run Code Online (Sandbox Code Playgroud)

在JS中还有一个等价物:

var value = "";
var ret = value || "value was empty"; // same as var ret = value == "" ? "value was empty" : value;
Run Code Online (Sandbox Code Playgroud)

但在C#中,(据我所知)只有"完整"版本有效:

string Value = "";
string Result = Value == string.Empty ? "value was empty" : Value;
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:C#中的三元运算符是否有简写,如果没有,是否有解决方法?

研究

我发现了以下问题,但他们指的是使用三元运算符作为if-else的简写:

速记如果声明:C#

使用条件?:(三元)运算符的好处

而这一个,但它与Java有关:

PHP中是否有像三元运算符的短版本的PHP?

我试过了什么

使用PHP的速记样式(由于语法错误而失败)

string Value = …
Run Code Online (Sandbox Code Playgroud)

c# ternary-operator

0
推荐指数
2
解决办法
1368
查看次数