【发布时间】:2014-03-22 07:26:47
【问题描述】:
我安装了带有 web Essentials 2013 的 Visual Studio 2013。我右键单击一个 .cs 文件并选择“Web Essentials -> 创建 Typescript intellisense 文件”,这样我就可以得到一个可以引用的 typescript d.ts 文件打字稿代码。我遇到了一些问题。假设我的班级如下:
namespace SomeNamespace
{
[TypescriptModule("test")]
[DataContract(Name = "MyDTO")]
public partial class MyPM
{
[DataMember(Name = "id")]
public long Id { get; set; }
[Required]
[DataMember(Name = "name")]
public CustomPM Data{ get; set; }
}
}
我得到的 d.ts 文件是:
declare module test {
interface MyPM{
id: number;
data: test.CustomPM;
}
}
第一个问题是那行:
[DataContract(Name = "MyDTO")]
在生成过程中被忽略。它不是生成一个名为 MyDTO 的类,而是一个名为 MyPM 的类,尽管 MyDTO 是指定在序列化期间使用的字符串,并且这就是通过线路传输到客户端的内容。我在这里做了一些调查和代码:
表示它使用 CodeClass.Name 属性来确定类名。有没有办法使用类上的属性(DataContract Name 之外的东西)使 CodeClass.Name 属性包含除实际类名之外的另一个字符串?
第二个问题是这一行:
data: test.CustomPM;
在安装了 typescript 的 Visual Studio 2013 中,test.CustomPM 给我一个错误,因为它无法在测试模块中找到类型 CustomPM,即使该类已生成到相同的“测试”模块中并且可用于采用。缺少的部分是 d.ts 文件顶部的这一行:
/// <reference path="./CustomPM.cs.d.ts"/>
但是,我一直无法找到让生成器也生成此内容的方法。
我真的很感激任何人都可以阐明解决这些问题的方法。谢谢!
【问题讨论】:
标签: web visual-studio-2013 typescript web-essentials