【问题标题】:Sharing code between C# and Script#: Script# Date class compatibility with C# DateTime在 C# 和 Script# 之间共享代码:Script# Date 类与 C# DateTime 的兼容性
【发布时间】:2012-08-13 07:12:22
【问题描述】:

我在 C# 项目和 Script# 之间有很多共享的业务逻辑代码。

自从 script# 核心库发生重大变化(当 DateTime 类变为 Date 时),事情就往南了。

有没有人想出通用的防弹解决方案如何处理它? 我读到有人说他们写了一个包装器,但没有人显示他们的来源。 可能存在一些陷阱,例如 JS Date 从 0 开始计算月份,C# DateTime 从 1 开始 等等,所以它并不是一个简单的包装器......

分叉原始脚本#并将 Date 重命名为 DateTime 并不是一个真正的选择,因为那时您需要处理两个项目 - 您的和 fork。

参考资料:

附: 我知道#ifdef 解决方案,请不要建议它;)

【问题讨论】:

    标签: c# script#


    【解决方案1】:

    一种可能的方法是在您的数据模型中仅将滴答计数存储为 long。然后使用一组帮助器将刻度解释为日期/日期时间并提供您正在寻找的 API。只是一个想法...考虑到语义差异,对于那些想要共享代码的人来说,无论如何都需要一些包装器/抽象,这是构建它的一种方法。

    这种方法的一个附带好处是简化了与 json 的序列化... . 所以至少如果你使用 .net 滴答计数并且它没有在客户端更新,它只是往返而不会失去精度。

    如果您确实构建了这个,将其分享回社区会很有趣。

    【讨论】:

    • 这将需要对 C# 进行大量更改。据我了解,您基本上建议完全放弃 DateTime 类的使用。我想要的是在 Script# 项目中创建 DateTime 类,它会以某种方式代理/包装 Date,所以我不需要更改 C# 代码,也不需要更改现有的 Script# 代码,因为双方的代码库都相当大。比我可以使用最新版本的 Script#。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-09
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多