1
4
以下是四种可能的解决方案。 1)使用 CodeDOM 生成C或VB代码。这还允许您使用Visual Studio扩展在设计器文件中生成代码。类似于Visual Studio已经提供的一些内置工具,例如为Web服务调用生成包装器的工具等。不幸的是,我不太了解如何扩展Visual Studio。
2)使用 Mono.Cecil 用于分析程序集后期生成的库。然后,可以用包含的新类型重新编写程序集。
3)使用 PostSharp . 我不太了解这个库,所以您可能无法向程序集添加新类型,但我知道您可以将IL注入方法中。它也有很多好东西,可以很容易地用属性来完成这项工作。所以你可以这么做-
4)使用内置 Reflection.Emit 用于生成具有不可变类型的新程序集的库。
|
2
2
为什么要麻烦建筑商? 你有一个(讨厌的)可变结构,但是如果你必须有它,直接使用它,而不是创建一个麻烦和不必要的构建器。 您有足够数量的这些结构,使您觉得需要自动生成此类包装器,这让我有些不安。我的直觉反应是你做错了… 如果不可变包装器的目的仅仅是存储快照,那么只需使用如下内容:
传入的结构保证不会再次更改,但您可以直接访问其上的所有值(对这些结果的修改发生在调用底层get_data函数时创建的副本上) |
John V · 是否存在单元测试无法发现的逻辑/流错误类型? 6 年前 |
Beefster · 为什么ANSI颜色转义以“m”而不是“]”结尾? 6 年前 |
Guillermo Gutiérrez · STR转换是如何工作的? 7 年前 |
RudziankoÅ · 合并排序数组算法 7 年前 |
user8852560 · 构造函数中的验证和构造函数冲突 7 年前 |
jav974 · 订购产品时寻找最佳价格组合的算法 7 年前 |
hippietrail · 确定浮点数中前导零的数量 7 年前 |