c#: .net framework 2.0支持扩展方法的办法
c#之扩展方法是个好方法,可惜只在.net framework 3.5及以上版本中用。
2.0版本若用,其编译报错如下:
错误 无法定义新的扩展方法,因为找不到编译器所需的类型“System.Runtime.CompilerServices.ExtensionAttribute”。是否缺少对 System.Core.dll 的引用?
那怎么办呢?
工程中加个文件,加其代码如下:
namespace System.Runtime.CompilerServices
{
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class | AttributeTargets.Assembly)]
public sealed class ExtensionAttribute : Attribute
{
}
}
需要注意的是:若程序集中引用了Newtonsoft.Json.Net20.dll这个库,则可能会有如下错误:
缺少编译器要求的成员“System.Runtime.CompilerServices.ExtensionAttribute..ctor”
删除重引用就是了。
那么可以做扩展验证,比如给整型int加入一扩展方法,变为负数:
public static class Utils
{
public static int ToNeg(this int v)
{
return -v;
}
}
即可做如下使用:
int i = ;
Console.WriteLine(i.ToNeg());
的确是非常便捷。
参考资料:
c# - Using extension methods in .NET 2.0? - Stack Overflow
C# Extension methods in .NET 2.0 - Stack Overflow
c# - Extension Method in .net 2.0 in VS2008 - Stack Overflow
缺少编译器要求的成员“System.Runtime.CompilerServices.ExtensionAttribute..ctor” 解决方案 - ChineseMoonGod - 博客园
c#: .net framework 2.0支持扩展方法的办法的更多相关文章
- .net framework 2.0使用扩展方法
.net framework中使用扩展方法,由网摘上看到,是因为编译器将扩展方法带上了ExtensionAttribute特性 要在.net framework 2.0中使用的话,可以自定义一个特性: ...
- [0] C# 扩展方法(Extension Method)
有时有这样的情况,有一个类,你不能修改它,但你又想对它扩展(添加一个方法),这个时候就可以用到扩展方法了.请看下面的例子: using System;using System.Collections. ...
- visual studio 2010 C#编程时 没有.NET framework 2.0目标框架的解决办法
解决办法是安装Framework .NET 3.5 Sp1 因为visual studio 2010是依赖.NET Framework 3.5 Sp1来识别其它版本的.NEt framework的. ...
- XP 安装不了framework 4.0 的解决方法
第一步: 如果是XP系统: 1.开始——运行——输入cmd——回车——在打开的窗口中输入net stop WuAuServ 2.开始——运行——输入%windir% 3.在打开的窗口中有个文件夹叫So ...
- Entity Framework 6.0 常见异常及解决办法
Ø 简介 本文主要记录 EF(Entity Framework) 在平时的开发中可能遇到的异常,以及应该如何去解决. 1. System.InvalidOperationException 1) ...
- C#3.0新增功能04 扩展方法
连载目录 [已更新最新开发文章,点击查看详细] 扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. 扩展方法是一种特殊的静态方法,但可以像扩展类型 ...
- C#的扩展方法解析
在使用面向对象的语言进行项目开发的过程中,较多的会使用到“继承”的特性,但是并非所有的场景都适合使用“继承”特性,在设计模式的一些基本原则中也有较多的提到. 继承的有关特性的使用所带来的问题:对象的继 ...
- c#扩展方法的理解(一:初识)
扩展方法是静态方法,是类的一部分,但是实际上没有放在类的源代码中. 扩展方法所在的类也必须被声明为static C#只支持扩展方法,不支持扩展属性.扩展事件等. 扩展方法的第一个参数是要扩展的类型,放 ...
- C#语法糖之第四篇: 扩展方法
今天继续分享C#4.0语法糖的扩展方法,这个方法也是我本人比较喜欢的方法.大家先想想比如我们以前写的原始类型不能满足现在的需求,而需要在该类型中添加新的方法来实现时大家会怎么做.我先说一下我没有学习到 ...
随机推荐
- JAVA\Android 多线程实现方式及并发与同步
转载:https://blog.csdn.net/csdn_aiyang/article/details/65442540 概述 说到线程,就不得不先说线程和进程的关系,这里先简单解释一下,进 ...
- 负载均衡器技术Nginx和F5的优缺点对比
负载均衡器技术Nginx和F5的优缺点对比 博客分类: 应用服务 F5nginx 对于数据流量过大的网络中,往往单一设备无法承担,需要多台设备进行数据分流,而负载均衡器就是用来将数据分流到多台设备的 ...
- LDAP & Implentation
LDAP: LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP.它是基于X.500标准的,但是简单多了并且可以根据需 ...
- Redhat Linux 配置Xmanager
1. vi /etc/inittab id:5:initdefault: //设置系统运行级为5,如果本来就是5就无需修改 id:5:respawn:/usr/sbin/gdm //添加到最后 ...
- Hexo:创建属于你自己的博客
step: 1.install node.js,git,github 2.npm install -g hexo-cli 3.mkdir hexo 4.cd hexo mkdir blog 5.cd ...
- 数据分析与科学计算可视化-----用于科学计算的numpy库与可视化工具matplotlib
一.numpy库与matplotlib库的基本介绍 1.安装 (1)通过pip安装: >> pip install matplotlib 安装完成 安装matplotlib的方式和nump ...
- 从零开始mycat实验环境搭建
版本说明 本机: jdk 8 使用IntelliJ IDEA调试MyCAT 1.6 release 主机一:droplet CentOS 7.5 x86_64 MyCAT 1.6 release O ...
- Channels实现扫码登录
参考了下别人说的原理,根据自己的逻辑实现,没有完全按照别人的原理来,所以不一定适用于大家,仅供参考吧!!! 流程如下: 1. web发起websocket链接,后端接受链接后立马发送第一次消息,为全局 ...
- 通过shell操作串口
1. 通过stty工具设置串口参数,例如 stty -F /dev/ttyUSB0 raw speed 9600 -echo min 0 time 10 上例设置了ttyUSB0设备的数据流格式为ra ...
- C#控件——批量化隐藏或显示同类型控件
当一个页面中添加了许多同类型控件,当需要控制这些控件进行显示或隐藏的时候,需要一个个的将Visible属性设置为false,十分不方便, 后通过论坛受一位大神(至于叫什么忘了)的启发,通过建立控件数组 ...