Type Provider - 通过 给一个自定义基类共享信息
来源:互联网 发布:手机勒索软件生成 编辑:程序博客网 时间:2024/05/19 23:26
我有一个坏习惯,对我来说,忘记它不是很容易。昨天晚上,这个小怪物又来困扰了我。可能我不能解决之前的问题,相反我被引诱到一片新领土。昨天晚上,这个怪物提醒了我单元测试 type provider, 使我想到怎样在不同的type provider方法间共享信息。
目前的type provider的方法调用是独立的, 几乎没有如何维护一个内部状态的例子。正则表达式type provider是一个例子。一旦你有了匹配的组,那个组就是一个自给的结构而不需要和另外匹配的组交互。我感兴趣的是怎样使信息在type provider的方法调用中流动/共享。例如,我想Method2去更新在Method1中发送的信息。b应该是"aa"
type T = MyTypeProvider
lett = T()
t.Method1("aa")
letb = t.Method2()
我想使用的方法是使用type provider里面的基类。目前的实例type providers总是取obj作为基类,然而我想使用我的类来存储我自己的东西。你能从这里下载代码。
用来保存在Method1里面传递的信息的基类是X。请保证type 和member一定是公有的。
type BaseType2() =
membervalX = ""withget, set
生成的代码取第一个元素%%arg.[0]为"this"指针,然后转换成 BaseType2.你不必先转换成obj然后再转换成BaseType2。当你使用typeprovider的时候,那个转换将生成一个错误。
InvokeCode = fun args -> <@@(%%args.[0]:BaseType2).X <- (%%args.[1]) @@>)
重要的是构造函数,请重新运行一个BaseType2()。 否则, 一个运行时错误提醒空的引用。 我猜那就是你需要让它工作的所有事情。
测试程序是:
#r@".\bin\Debug\ShareInfoSampleTypeProvider.dll"
type T = Samples.ShareInfo.TPTest.TPTestType
let t = T()
t.F1("aa")
let a = t.F2()
printfn "the parameter in F1 is %A" a
结果是:
the parameter in F1 is"aa"
这个技术用一个更自动的方式打开了扩展已存在类型的门。你可以使用扩展方法来扩展类型,但是你必须敲每个字符。现在,你可以写你的type provider来扩展你的类型。你的程序 将生成方法和属性。
给我一些时间来想一个好的实例, 现在,该赶紧睡觉了.. :)
译文出处:http://apollo13cn.blogspot.com/2012/05/type-provider-share-information-by.html
- Type Provider - 通过 给一个自定义基类共享信息
- C#中通过Type类访问数据类型信息
- C#中通过Type类访问数据类型信息
- C#中通过Type类访问数据类型信息
- Android在Adapter通过自定义Provider构建多元UI展示
- Reflect 通过反射获取自定义注解值给另外一个对象赋值
- 今天碰到的一个问题,关于通过基类对象的引用给子类赋值
- 简单的实现一个自定义的Linq to Sql Provider
- MFC 给自定义工具栏添加提示信息
- 给大家分享一个自定义Winform控件类
- 系统上下文信息PROVIDER
- Java Provider 信息
- 笔记本(通过网线)共享给台式机上网
- Ubuntu通过AP共享WiFi给Android的方法
- ubuntu通过蓝牙共享网络给Android手机
- 把笔记本电脑的无线网络通过网线共享给台式机
- 笔记本(通过网线)共享给台式机上网
- ubuntu通过蓝牙共享网络给Android手机
- 通用二进制代码编程指南
- 梅香扑鼻
- (12)java5的CountDownLatch、Exchanger同步工具
- 二叉树遍历非递归和快速排序
- 最强电脑病毒
- Type Provider - 通过 给一个自定义基类共享信息
- 原始套接字
- java 接口(Interface)与 抽象类(abstract class)
- java static 关键字的使用(摘抄)
- 艰难的选择
- C++成员函数的内存分配问题
- java集合框架【3】 java1.5新特性 ConcurrentHashMap、Collections.synchronizedMap、Hashtable讨论
- Lua脚本语言入门
- 怎么建立socket长连接???