我正在评估 Json.Schema 从 .net 中的类型化对象生成 json 模式,以便在客户端和服务器之间共享验证。
我有一个从单元测试中调用的超级简单的实现。
var generator = new JsonSchemaBuilder();
AttributeHandler.AddHandler(new RequiredAttributeHandler());
var schema = generator.FromType<T>();
RequiredAttributeHandler 不会被调用。
我做错了吗?
实现
IAttributeHandler<T>
的属性会自动处理,不需要注册,因为系统会检查处理程序接口的所有属性。如果您正在构建自己的属性,建议您这样做。
要处理不实现
IAttributeHandler<T>
的属性,您需要注册处理程序,否则系统找不到它。如果您使用其他人的属性,建议这样做。
在上面的例子中,您已经创建了一个
RequiredAttributeHandler
。我预计这可能适用于 _System.ComponentModel.DataAnnotations` 中的 [Required]
属性。如果是这种情况,我建议使用另一个扩展库,JsonSchema.Net.Generation.DataAnnotations(docs),它为该命名空间中的(大多数)属性提供处理程序。