zoukankan      html  css  js  c++  java
  • 添加扩展方法,提示编译错误 “缺少编译器要求的成员”

    新公司里用的Casltl MVC框架,项目基于.Net3.5。

    一次调用返回json,发现使用火狐插件JsonView不能格式化json,使用Firebug查看,响应头里没有ContentType的键值。

    使用VS插件reflector 查看MonoRail 的源码,发现渲染页面的方法RenderText 渲染后的响应头ContentType为 text/html。

    于是我视图给 Castle.MonoRail.Framework.Controller 写个扩展方法 RenderJson ,设置响应头ContentType="application/json",这样JsonView也许就可以正确格式化返回的json了。

    完成扩展方法后,这时编译报错:

      缺少编译器要求的成员“System.Runtime.CompilerServices.ExtensionAttribute..ctor

    谷歌一番,有网友遇到同样的问题,原因是 Newtonsoft.Json.Net20.dll 引起的,因为该类库基于.Net 2.0,但是.Net 2.0不支持扩展方法,所以Json.net作者自己写了一个Attribute,来实现扩展方法,但是这个Attribute在.Net 3.0中已存在同名的,所以在基于.Net 3.0以上项目引用该类库时,就会出现冲突。

    解决办法:

    1、移除Newtonsoft.Json.Net20.dll后重新引用;(亲测可用)

     .

    参考: Dozer  关于一个2.0下实现扩展方法所引发的错

  • 相关阅读:
    [Luogu] 借教室
    [Luogu] 子共七
    [Luogu] 让我们异或吧
    【bzoj1030】[JSOI2007]文本生成器
    HDU3068 最长回文
    【bzoj2342】[Shoi2011]双倍回文
    【NOIP2012】借教室
    HDU2203 亲和串
    【POJ2001】Shortest Prefixes
    vodevs3031 最富有的人
  • 原文地址:https://www.cnblogs.com/songxingzheng/p/4527906.html
Copyright © 2011-2022 走看看