添加扩展方法,提示 “缺少编译器要求的成员”

新公司里用的Casltl MVC框架,基于.Net3.5,我们负责为Android和IOS提供数据接口,返回json格式数据。

在接口测试页面使用火狐插件JsonView,试图格式化结果json,发现不行。

使用VS插件reflector 查看MonoRail 的源码,发现渲染页面的方法RenderText渲染结果为 text/html。

于是我给 Castle.MonoRail.Framework.Controller 写了一个扩展方法 RenderJson ,设置响应头ContentType="application/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下实现扩展方法所引发的错误

时间: 2024-10-13 00:28:33

添加扩展方法,提示 “缺少编译器要求的成员”的相关文章

Json序列化提示缺少编译器要求的成员“ystem.Runtime.CompilerServices.ExtensionAttribute..ctor”

//缺少编译器要求的成员"ystem.Runtime.CompilerServices.ExtensionAttribute..ctor" namespace System.Runtime.CompilerServices { public class ExtensionAttribute : Attribute { } }

C#.NET为List添加扩展方法:获取唯一值

public static class ListTools { /// <summary> /// 获取唯一值列表 /// </summary> /// <param name="strList">原始值</param> /// <returns>唯一值</returns> public static List<T> GetUniqueValue<T>(this List<T>

缺少编译器要求的成员“System.Runtime.CompilerServices.ExtensionAttribute..ctor” 解决方案

namespace System.Runtime.CompilerServices { public class ExtensionAttribute : Attribute { } } 网上找的其他方法错误产生环境及非完美解决办法错误提示:缺少编译器要求的成员“System.Runtime.CompilerServices.ExtensionAttribute..ctor”这个错误真的非常诡异,因为双击这个错误的时候无法定位到出错的地方.而且这个错误实在是非常不明确.其实,产生这个错误的人大部

错误 1 缺少编译器要求的成员“System.Runtime.CompilerServices.ExtensionAttrib

错误 1 缺少编译器要求的成员"System.Runtime.CompilerServices.ExtensionAttrib 删除Newtonsoft.Json.dll 引用 ,再重新引用即可. 原文:http://bbs.csdn.net/topics/360254920 错误 1 缺少编译器要求的成员"System.Runtime.CompilerServices.ExtensionAttrib,布布扣,bubuko.com 错误 1 缺少编译器要求的成员"System

JQuery添加扩展方法(理解$.extend(),与$.fn.extend()方法区别)

理解$.extend(),与$.fn.extend()方法区别 1.$.extend()方法 $.extend()方法在JQuery中有两个用法,第一次是扩展方法, 第二个方法是 jQuery.extend([deep], target, object1, [objectN]) 返回值:Object 把2个对象合并得到新的target,deep是可选的(递归合并) 合并 settings 和 options,修改并返回 settings. jQuery 代码: var settings = {

为system对象添加扩展方法

////扩展方法类:必须为非嵌套,非泛型的静态类 public static class DatetimeEx { //通过this声明扩展的类,这里给DateTime类扩展一个Show方法,只有一个参数 public static void Show(this DateTime date, string msg) { Console.WriteLine("扩展方法调用"); Console.WriteLine(msg); } }

LINQ学习笔记——(1)添加扩展方法

目的:  对已存在类型的行为进行扩展 注意事项: 扩展方法是一种特殊的静态方法 扩展方法必须在静态类中定义 扩展方法的优先级低于同名的类方法 扩展方法只在特定的命名空间内有效 除非必须不要滥用扩展方法 public static class ExtraMethod { public static string ToPascal(this string s) { //把字符串的首字母大写,其它为小写 return s.Substring(0, 1).ToUpper() + s.Substring(

项目中遇到的扩展方法-总结和分享

概述: 本篇是对工作中遇到的扩展方法的总结,好记性不如乱笔头,先记下来,以后遇到类似问题,如果忘了,可以看下博客. 一.问题描述: 在项目中遇到一个问题,就是要将左边的代码替换为右边的代码,右边代码是对左边代码的封装,所以右边的代码更简便些. dataReader.IsDBNull(2) ? (string)null : dataReader.GetString(2).Trim(); dataReader.MyGetDataString(2); dataReader的类型是System.Data

c#扩展方法-摘自msdn

扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用.  对于用 C# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法之间没有明显的差异. 扩展方法编写代码: namespace ExtensionMethods { public static class MyExtensions { public static int WordCoun