代码之家  ›  专栏  ›  技术社区  ›  C.S.

(C#,.net 6)为什么我不能扩展ModelStateDictionary?

  •  0
  • C.S.  · 技术社区  · 2 年前

    我想扩展ModelStateDictionary以添加一个简单的ModelState。AddModelErrors(),它同时接受多个错误。

    我已经创建了以下类:

        public static class ModelStateExtensions
        {
            public static void AddModelErrors(this ModelStateDictionary msd, List<string> errors)
            {
                foreach(var error in errors)
                {
                    msd.AddModelError("", error);
                }
            }
    
            public static void AddDuck(this ModelStateDictionary msd)
            {
                msd.AddModelError("duck", "quack");
            }
        }
    

    然后我尝试在控制器中这样调用它:

    if(errors.Any())
                {
                    ModelState.AddModelErrors(errors);
    
                }
    

    并获得以下错误消息:

    'ModelStateDictionary' does not contain a definition for 'AddModelErrors' and the best extension method overload 'ModelStateExtensions.AddModelErrors(ModelStateDictionary, List<string>)' requires a receiver of type 'ModelStateDictionary'
    

    我有:

    • 向控制器添加了具有正确命名空间的using语句
    • 先编译所有内容
    • 扩展方法在同一个项目中,因此不需要项目引用

    无论如何,我认为这些会给我一个不同的错误信息,对吧?

    这个错误消息是什么意思?接收器怎么样 类型为ModelStateDictionary?

    0 回复  |  直到 2 年前
    推荐文章