c# - 请求模型引发堆栈溢出 - .NET
问题描述
我有模型 NewOrderModel:
public class NewOrderModel
{
private readonly List<KeyValuePair<string, string>> symbols =
new List<KeyValuePair<string, string>>
{
new KeyValuePair<string, string> ("WINZ19", "XBMF"),
new KeyValuePair<string, string> ("WDOZ19", "XBMF")
};
[Required]
public string symbol
{
get => symbol;
set
{
market = this.symbols.Find(findSymbol => findSymbol.Key == symbol).Value;
symbol = value;
}
}
public string market
{
get => market;
private set
{
market = value;
}
}
}
收到请求后,交易品种的值会加载市场字段。
但是当这个模型在控制器中被调用时,它会引发堆栈溢出(哦,具有讽刺意味)。我怀疑这可能是某种递归,但我不明白它是怎么回事。
谁能指出我在这里做错了什么?
解决方案
您的财产获取者正在呼唤他们自己。您需要将值存储在支持字段中。
公共属性也遵循 PascalCase 约定
我不知道您在 Symbol setter 中尝试了什么,也许应该是(请注意,如果符号列表中不存在符号值,您将需要添加异常管理):
try {
Market = this.symbols.Find(findSymbol => findSymbol.Key == value).Value;
_symbol = value;
} catch {
//Do exception handling
}
这里是完整的代码:
public class NewOrderModel
{
private readonly List<KeyValuePair<string, string>> symbols = new List<KeyValuePair<string, string>>
{
new KeyValuePair<string, string> ("WINZ19", "XBMF"),
new KeyValuePair<string, string> ("WDOZ19", "XBMF")
};
private string _symbol;
[Required]
public string Symbol
{
get => _symbol;
set
{
Market = this.symbols.Find(findSymbol => findSymbol.Key == value).Value;
_symbol = value;
}
}
private string _market;
public string Market
{
get => _market;
private set
{
_market = value;
}
}
推荐阅读
- amazon-s3 - 如何修复boto3中的“StorageDataError:BotoClientError:目标文件空间不足”错误?
- r - 我使用的函数返回空结果
- node.js - 在这个示例应用程序中,webpack 如何对供应商文件进行代码拆分
- dji-sdk - 将视频从板载到远程计算机
- database - DolphinDB 是否有与 LIMIT 子句等效的子句?
- c - 编译给定代码时 GCC 访问的文件
- android - 使用已存在的电子邮件或用户名保存用户会导致 ParseUser 返回错误的值
- arrays - 如何将字符串数组作为函数自己的参数传递?编译器说它不起作用
- python - 是否想通过比较 pandas 数据框中的另一列来为新列赋值?
- docker - how to remove all the build history of a docker image?