本文整理汇总了C#中JSchemaReader.AddDeferedSchema方法的典型用法代码示例。如果您正苦于以下问题:C# JSchemaReader.AddDeferedSchema方法的具体用法?C# JSchemaReader.AddDeferedSchema怎么用?C# JSchemaReader.AddDeferedSchema使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类JSchemaReader
的用法示例。
在下文中一共展示了JSchemaReader.AddDeferedSchema方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: FindSchema
//.........这里部分代码省略.........
{
current = null;
}
}
else
{
break;
}
}
if (current is JToken)
{
JToken t = (JToken)current;
JSchemaAnnotation annotation = t.Annotation<JSchemaAnnotation>();
if (annotation != null)
{
setSchema(annotation.Schema);
resolvedSchema = true;
}
else
{
schemaReader.ReadInlineSchema(setSchema, t);
resolvedSchema = true;
}
}
else
{
JSchema s = current as JSchema;
if (s != null)
{
setSchema(s);
resolvedSchema = true;
// schema is a reference schema and needs to be resolved
if (s.Reference != null)
schemaReader.AddDeferedSchema(setSchema, s);
}
else
{
resolvedSchema = false;
}
}
schemaReader._schemaStack.Clear();
}
else
{
JSchemaDiscovery discovery = new JSchemaDiscovery();
discovery.Discover(schema, null);
Uri resolvedReference = ResolveSchemaId(rootSchemaId, reference);
// default Uri comparison ignores fragments
KnownSchema knownSchema = discovery.KnownSchemas.SingleOrDefault(s => s.Id.OriginalString.TrimEnd('#') == resolvedReference.OriginalString.TrimEnd('#'));
if (knownSchema != null)
{
resolvedSchema = true;
setSchema(knownSchema.Schema);
}
else
{
int hashIndex = resolvedReference.OriginalString.IndexOf('#');
if (hashIndex != -1)
{
Uri path = new Uri(resolvedReference.OriginalString.Substring(0, hashIndex), UriKind.RelativeOrAbsolute);
Uri fragment = new Uri(resolvedReference.OriginalString.Substring(hashIndex), UriKind.RelativeOrAbsolute);
// default Uri comparison ignores fragments
knownSchema = discovery.KnownSchemas.SingleOrDefault(s => s.Id.OriginalString.TrimEnd('#') == path.OriginalString);
if (knownSchema != null)
{
// don't attempt to find a schema in the same schema again
// avoids stackoverflow
if (knownSchema.Schema != schema
|| !UriComparer.Instance.Equals(rootSchemaId, path)
|| !UriComparer.Instance.Equals(reference, fragment))
{
resolvedSchema = FindSchema(setSchema, knownSchema.Schema, path, fragment, schemaReader);
}
else
{
resolvedSchema = false;
}
}
else
{
resolvedSchema = false;
}
}
else
{
resolvedSchema = false;
}
}
}
return resolvedSchema;
}