首页 > 解决方案 > 定义一个不区分大小写的字典作为控制器方法参数

问题描述

是否可以为IEqualityComparer<TKey>用作控制器内方法输入的字典定义一个?

现在我最好的“解决方案”是创建一个新字典并将数据复制到过滤器中。

public IActionResult DoStuff([FromBody] IDictionary<string, object> data)
{
    //do stuff with Case-Insentive dictionary here
    return StatusCode(200);
}

标签: c#dictionaryasp.net-coreparameters

解决方案


对于不区分大小写的字典,您可以尝试实现自己的字典,例如

public class CaseInSensitiveDictionary<TValue> : Dictionary<string, TValue> 
{
    public CaseInSensitiveDictionary():base(StringComparer.OrdinalIgnoreCase)
    {

    }
}

接着

    [HttpPost]
    public IActionResult DoStuff([FromBody] CaseInSensitiveDictionary<object> data)
    {
        var t1 = data["t1"];
        var T1 = data["T1"];
        //do stuff with Case-Insentive dictionary here
        return StatusCode(200);
    }

推荐阅读