【发布时间】:2026-02-04 09:45:01
【问题描述】:
我正在开发一个 Angular 前端应用程序,它可以从 C# (.NET) 后端服务器发送和接收数据。我正在努力在 Angular 应用程序(打字稿)和后端(C#)之间共享数据对象模型 - 我正在寻找一种干净、自动化的方式来保持两组数据对象模型的同步。
例如,假设我有一个名为“IData”的 C# 接口,其属性为“Name”。我想要一个名为“IData”的 Typescript 接口,它也有一个属性“Name”。如果我将属性名称更新为其他名称(例如“LongName”),我希望打字稿文件自动反映此更改。我可以使用单向数据链接(用户更新 C#,打字稿自动更新)。
我目前正在使用 Typewriter (https://frhagn.github.io/Typewriter/) 从 C# 源代码自动生成 typescript 文件,它做得很好。我要解决的问题是:从我的 Angular 应用程序共享/访问自动生成的打字稿文件的最佳方式是什么?
我曾考虑将自动生成的打字稿文件包含到 Angular 库项目中的 Angular 模块中,构建它,然后将其导入我的 Angular 应用程序。但是,我找不到让库模块自动包含库中所有文件的好方法(我想避免在创建要共享的新数据对象时手动更新模块文件,因为这些更改有些频繁) ,并且我目前正在使用无法在 Angular 模块中导出的接口 (An interface cannot be exported in an angular 2 module?)。
我已经研究过使用 Typescript 模块(https://www.typescriptlang.org/docs/handbook/modules.html - 不同于 Angular 模块和 Javascript 模块)和 Typescript 引用(https://www.typescriptlang.org/docs/handbook/project-references.html),这些似乎更有希望用于共享接口,但我仍然不确定如何使用它们在这种情况下。
我使用的是 Visual Studio 2017,因此理想情况下,数据对象将驻留在一个 Visual Studio 项目中,然后我的 Angular 应用程序将驻留在单独的 Visual Studio 项目中,尽管我知道这是否可能。
感谢您在正确的方法上提供的任何指导!
【问题讨论】:
-
为什么不使用包含两个项目的 monorepo?
-
@Titulum - 感谢您的建议。因为我使用的是 Typewriter,所以我需要与 C# 后端解决方案共享这个 Data Object 库。因此,如果我将其设为 monorepo,则它必须包括我的后端服务器项目、共享数据对象项目(C# 和 typescript)、前端客户端项目以及我们小组使用的所有引用框架项目。合并服务器和客户端代码是不可取的,如果可能的话,我想把事情分开得更干净。