JsonSchemaBuilder.FromType<T>().Build() 不执行 IAttributeHandlers

问题描述 投票:0回答:1

我正在评估 Json.Schema 从 .net 中的类型化对象生成 json 模式,以便在客户端和服务器之间共享验证。

我有一个从单元测试中调用的超级简单的实现。

var generator = new JsonSchemaBuilder();

AttributeHandler.AddHandler(new RequiredAttributeHandler());

var schema = generator.FromType<T>();

RequiredAttributeHandler 不会被调用。

我做错了吗?

.net json-everything
1个回答
0
投票

实现

IAttributeHandler<T>
的属性会自动处理,不需要注册,因为系统会检查处理程序接口的所有属性。如果您正在构建自己的属性,建议您这样做。

要处理实现

IAttributeHandler<T>
的属性,您需要注册处理程序,否则系统找不到它。如果您使用其他人的属性,建议这样做。

在上面的例子中,您已经创建了一个

RequiredAttributeHandler
。我预计这可能适用于 _System.ComponentModel.DataAnnotations` 中的
[Required]
属性。如果是这种情况,我建议使用另一个扩展库,JsonSchema.Net.Generation.DataAnnotationsdocs),它为该命名空间中的(大多数)属性提供处理程序。

© www.soinside.com 2019 - 2024. All rights reserved.