关于.net中IL语言的一个应用场景 2014-2-10 17:15 阅读(0)
来源:互联网 发布:独立域名邮箱 编辑:程序博客网 时间:2024/06/05 18:59
在实际编程中,有许多变量的值可能来自于一组已知的值,同时又提供必要的自定义值,以提供扩充可能,基于此种需求,打算设计一个String<T>类,其中范型参数为一枚举变量,该类提供字符串与枚举量两种构造方式(我不想为每个可能的对象都编写一个类,我只想定义一个枚举,如果要定义类的可以绕道)。残酷的是C#不支持定义一个范型,其参数来自Enum的约束,后来又偿试了托管C++,很遗憾,继续不提供支持。对于其它托管语言,没有进一步去偿试,果断选作IL作为这个类的开发语言,其示例代码如下:
.classpublicautoansibeforefieldinit String`1<([mscorlib]System.Enum)T>
extends[mscorlib]System.Object
{
.fieldpublicstring _value
.methodpublichidebysigspecialnamertspecialname
instancevoid .ctor(string v) cilmanaged
{
// 代码大小 24 (0x18)
.maxstack 8
IL_0000: ldarg.0
IL_0001: ldnull
IL_0002: stfld stringclass Inm.Text.String`1<!T>::_value
IL_0007: ldarg.0
IL_0008: call instancevoid[mscorlib]System.Object::.ctor()
IL_000d: nop
IL_000e: nop
IL_000f: ldarg.0
IL_0010: ldarg.1
IL_0011: stfld stringclass Inm.Text.String`1<!T>::_value
IL_0016: nop
IL_0017: ret
}//end of method String`1::.ctor
}
编译成DLL后,经C#调用,完美解决问题。
(大部分IL代码可以通过先编写相关的C#类经反射生成,其它的代码可经VS的一个扩展ILSupport编写,目前该扩展只支持到VS2012,要想支持VS2013,需修改VSIX安装文件中的vsixmanifast文件)
- 关于.net中IL语言的一个应用场景 2014-2-10 17:15 阅读(0)
- 关于IL中间语言的浅谈
- 一个关于在VB.NET中应用超级解霸的问题
- .Net IL中间语言速查表
- 关于一个服务上面多个应用的场景
- Inside Microsoft .Net IL Assembly的一个错误
- 简谈关于angularjs中$socpe.$apply()的应用场景
- 反射的一个应用场景
- ClassLoader的一个应用场景
- .NET 技术FAQ(八)-----中间语言 (IL)
- IL语言如何在.NET下运行?
- .NET 中关于反射的应用 (C#)
- 关于.Net中Cookies的应用
- .NET 中关于反射的应用
- 在asp.net中关于桥接模式的一个应用
- il语言
- c语言中关于/的一个细节
- 一步步教你读懂NET中IL
- csdn 代码样式 代码高亮 代码风格
- 可变参数函数
- 稀疏表示step by step
- 数字图像的处理
- Pro Android学习笔记(七六):服务(1):local和remote
- 关于.net中IL语言的一个应用场景 2014-2-10 17:15 阅读(0)
- 团队法则100条
- 想开发Android应用吗?从这里开始吧!
- 摄像机标定和图像径向畸变校正
- CentOS sendmail安装及邮件域名配置
- Extjs 4 nested grid or sub grid demo
- SNMP监控一些常用OID
- 字典学习-网友答疑
- poj 2955 Brackets(区间DP,经典问题)求有规律的括号的最大长度