我意识到这与C#的强烈打字性质相悖, 但我发现在使用语言中的动态物体时, JavaScript 或 PowerShell 通常发现的一些更有用的功能根本不实用。
例如,以下的C#代码在运行时会失效,原因显而易见。
dynamic x = 1.0;
int y = x;
但这就使得C#的动态特征在处理诸如JSON有效载荷或CSV产生的松散打字数据时非常有限,在这些数据中,表达方式的细微变化可能导致运行时的行为非常不同。
我所寻找的是类似 VBA / VBScript 时代 < code> Varient type。 我想可以从 DynamicObject
中得出这样的类型,将原始值包起来,如 Int32
, String
等,并在运行时进行适当的投影 。 我在动态环境中用“null”值做了类似 的东西。
但是,有没有类似的东西已经建立?我环顾GitHub或Cocplex,毫无用处,但很难寻找。在我开始研究我所想象的将是一个相当复杂的班级之前,我想确保我没有浪费我的时间。
About the practicality of all of this
我要指出的是,我长期抵制C#中的动态发送概念,因为其本意不是要成为动态语言。 坦率地说,我希望它不会被添加到语言中,或者至少局限于COM对接情景中。
但话虽如此,我总是好奇用什么方法“隐藏”语言特征,让他们做他们从未打算做的事情。有时有些有用的东西会从中产生出来。例如,有很多例子说明人们使用IDisposable
接口和 语句来做与释放资源无关的事情。
我怀疑我会用它来生产 应用或任何需要 交给另一个开发商的东西。