visual-studio-2015 - ServiceStackVS TypeScript 引用 (.d.ts) 错误 - "Cannot find name ' Nullable'。”

标签 visual-studio-2015 servicestack visual-studio-extensions

使用 ServiceStackVS 添加 TypeScript 引用时,对于任何数组形式的 Request DTO 属性,生成的 .d.ts 文件会生成错误“找不到名称‘Nullable’。”。例如,我有一个用于查找事件的请求 DTO:

public class FindEvents : QueryBase<Event> {
    ...

    [QueryField(Template = "{Field} BETWEEN {Value1} AND {Value2}", Field = "StartDateTime")]
    public DateTime?[] DateBetween { get; set; }

    [QueryField(Template = "MONTH({Field}) BETWEEN {Value1} AND {Value2}", Field = "StartDateTime")]
    public int?[] MonthBetween { get; set; }

    ...
}

此请求 DTO 生成的接口(interface)如下所示:

interface FindEvents extends QueryBase_1<Event>, IReturn<QueryResponse<Event>>
{
    ...

    DateBetween?: Nullable;
    MonthBetween?: Nullable;
    ...

}

生成的类型“Nullable”是导致错误的原因。

在服务中,我可以将 DateTime?[]int?[] 更改为 string[] ,这将生成 DateBetween?: string[];MonthBetween?: string[]; 分别。

这将在服务和 TypeScript 代码中起作用 - 但我不希望以这种方式更改服务。

有什么建议吗?是否可以更新 ServiceStackVS 以处理作为数组的 Request DTO 属性?

谢谢。

最佳答案

数组在 .NET 中已经是可为空的引用类型,因此您无需指定它也包含可为空的值类型。

AutoQuery 也不处理某些 ValueType 为 null 的数组,因此您只需将数组更改为不可为 null 的值类型,例如:

public class FindEvents : QueryBase<Event> 
{
    [QueryField(Template = "{Field} BETWEEN {Value1} AND {Value2}", Field = "StartDateTime")]
    public DateTime[] DateBetween { get; set; }

    [QueryField(Template = "MONTH({Field}) BETWEEN {Value1} AND {Value2}", Field = "StartDateTime")]
    public int[] MonthBetween { get; set; }
}

这最终提供了一个更好的强类型 API,同时属性仍然是可选的。

Note: DateTime's are emitted as strings in TypeScript to match how they're sent in JSON.

关于visual-studio-2015 - ServiceStackVS TypeScript 引用 (.d.ts) 错误 - "Cannot find name ' Nullable'。”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35567642/

相关文章:

c# - 为什么编译器会为已分配但从未使用过其值的变量给出错误而不是警告

c# - `foreach` 什么时候停止处理字符串?

.net - Redis Cache 如何与 High Availability 和 Sentinel 协同工作?

c# - Visual Studio 扩展 : translate $(XXX) programmatically

entity-framework-6 - VS2015 从数据库更新模型 - 意外异常

xamarin - 如何使 UWP 应用与 Windows 8.1 兼容

servicestack - ServiceStack OrmLite如何检测对代码模型的更改并重新创建数据库?

c# - 如何使用 ServiceStack JsonSerializer 序列化哈希表?

c# - 将自定义编辑器窗口添加到 Visual Studio 窗口 Pane

visual-studio - Visual Studio 扩展 : Access VS Options from arbitrary DLL