本文整理汇总了C#中IEdmTypeReference.AsTypeDefinition方法的典型用法代码示例。如果您正苦于以下问题:C# IEdmTypeReference.AsTypeDefinition方法的具体用法?C# IEdmTypeReference.AsTypeDefinition怎么用?C# IEdmTypeReference.AsTypeDefinition使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IEdmTypeReference
的用法示例。
在下文中一共展示了IEdmTypeReference.AsTypeDefinition方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ReadNonEntityValueImplementation
//.........这里部分代码省略.........
}
}
result = null;
}
else
{
Debug.Assert(
!valueIsJsonObject || this.JsonReader.NodeType == JsonNodeType.Property || this.JsonReader.NodeType == JsonNodeType.EndObject,
"If the value was an object the reader must be on either property or end object.");
switch (targetTypeKind)
{
case EdmTypeKind.Primitive:
Debug.Assert(targetTypeReference == null || targetTypeReference.IsODataPrimitiveTypeKind(), "Expected an OData primitive type.");
IEdmPrimitiveTypeReference primitiveTargetTypeReference = targetTypeReference == null ? null : targetTypeReference.AsPrimitive();
// If we found an odata.type annotation inside a primitive value, we have to fail; type annotations
// for primitive values are property annotations, not instance annotations inside the value.
if (typeNameFoundInPayload)
{
throw new ODataException(ODataErrorStrings.ODataJsonLightPropertyAndValueDeserializer_ODataTypeAnnotationInPrimitiveValue(ODataAnnotationNames.ODataType));
}
result = this.ReadPrimitiveValue(
valueIsJsonObject,
primitiveTargetTypeReference,
validateNullValue,
propertyName);
break;
case EdmTypeKind.Enum:
Debug.Assert(targetTypeReference == null || targetTypeReference.IsODataEnumTypeKind(), "Expected an OData enum type.");
IEdmEnumTypeReference enumTargetTypeReference = targetTypeReference == null ? null : targetTypeReference.AsEnum();
result = this.ReadEnumValue(
valueIsJsonObject,
enumTargetTypeReference,
validateNullValue,
propertyName);
break;
case EdmTypeKind.Complex:
Debug.Assert(targetTypeReference == null || targetTypeReference.IsComplex(), "Expected null or a complex type.");
if (payloadTypeNameFromPropertyAnnotation)
{
// We already have type name specified as annotation on the parent property.
// OData type property annotation on a complex value - fail.
throw new ODataException(ODataErrorStrings.ODataJsonLightPropertyAndValueDeserializer_ComplexValueWithPropertyTypeAnnotation(ODataAnnotationNames.ODataType));
}
if (!valueIsJsonObject && !insideComplexValue)
{
this.JsonReader.ReadStartObject();
}
result = this.ReadComplexValue(
targetTypeReference == null ? null : targetTypeReference.AsComplex(),
payloadTypeName,
serializationTypeNameAnnotation,
duplicatePropertyNamesChecker);
break;
case EdmTypeKind.Collection:
IEdmCollectionTypeReference collectionTypeReference = ValidationUtils.ValidateCollectionType(targetTypeReference);
if (valueIsJsonObject)
{
// We manually throw JSON exception here to get a nicer error message (we expect array value and got object).
// Otherwise the ReadCollectionValue would fail with something like "expected array value but found property/end object" which is rather confusing.
throw new ODataException(ODataErrorStrings.JsonReaderExtensions_UnexpectedNodeDetectedWithPropertyName(JsonNodeType.StartArray, JsonNodeType.StartObject, propertyName));
}
result = this.ReadCollectionValue(
collectionTypeReference,
payloadTypeName,
serializationTypeNameAnnotation);
break;
case EdmTypeKind.TypeDefinition:
result = this.ReadTypeDefinitionValue(
valueIsJsonObject,
expectedTypeReference.AsTypeDefinition(),
validateNullValue,
propertyName);
break;
default:
throw new ODataException(ODataErrorStrings.General_InternalError(InternalErrorCodes.ODataJsonLightPropertyAndValueDeserializer_ReadPropertyValue));
}
// If we have no expected type make sure the collection items are of the same kind and specify the same name.
if (collectionValidator != null)
{
string payloadTypeNameFromResult = ODataJsonLightReaderUtils.GetPayloadTypeName(result);
Debug.Assert(expectedTypeReference == null, "If a collection validator is specified there must not be an expected value type reference.");
collectionValidator.ValidateCollectionItem(payloadTypeNameFromResult, targetTypeKind);
}
}
return result;
}