首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何向System.Type添加元数据?

如何向System.Type添加元数据?
EN

Stack Overflow用户
提问于 2017-10-06 17:07:36
回答 1查看 59关注 0票数 1

我一直在研究一种语言,但在.NET集成方面,到目前为止,我只设法让原始类型工作。昨天晚上我有了一个好主意--而不是试图在类型检查过程中找出元组、模块和函数的确切System.Type应该是什么,我可以做的是获得System.ObjectSystem.Type,并添加一些与我自己的复杂语言类型相对应的元数据。重要的不是我要向其中添加元数据的确切System.Type,而是我的语言中的每个类型的替身都是彼此不同的。

我需要这样做的原因是,我正在使用反射名称空间中的函数进行集成,这涉及到如何处理System.Type

代码语言:javascript
复制
type SpiralType =
    | IntT
    | StringT
    | TupleT of SpiralType list

例如,为了确保唯一性,我想要添加到System.Type中的是上面的F#区分联合类型的实例。

做这件事的最好方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2017-10-07 00:43:07

在.NET中使用额外数据扩充类型信息的标准方法是使用属性,尽管属性构造函数参数通常仅限于可以表示为文字的值。这对你来说可能是问题,也可能不是问题,这取决于你希望你的元数据有多丰富。杜氏可能行不通。

否则,一个直接的解决方案将是将您的值与任意元数据一起包装到一个泛型类型中,即

代码语言:javascript
复制
type TypeWithMetadata<'typ, 'metadata>(value: 'typ, metadata: 'metadata) = 
    member this.Value = value
    member this.Metadata = metadata

尽管这可能会带来你想要避免的开销?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46602208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档